例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
当前回答
选项1
一种方法是使用s标志(就像接受的答案一样):
/(.*)<FooBar>/s
演示1
选项2
第二种方法是使用m (multiline)标志和以下任何模式:
/([\s\S]*)<FooBar>/m
or
/([\d\D]*)<FooBar>/m
or
/([\w\W]*)<FooBar>/m
演示2
RegEx电路
jex。Im可视化正则表达式:
其他回答
([\ s \ s] *) < FooBar >
点匹配除换行符(\r\n)以外的所有字符。所以使用\s\ s,它将匹配所有字符。
"."通常不匹配换行符。大多数正则表达式引擎允许您添加s标志(也称为DOTALL和SINGLELINE)来使“.”也匹配换行符。 如果失败了,你可以做一些类似[\S\ S]的事情。
我想在Java中匹配一个特定的if块:
...
...
if(isTrue){
doAction();
}
...
...
}
如果我使用regExp
if \(isTrue(.|\n)*}
它包含方法块的右大括号,所以我使用
if \(!isTrue([^}.]|\n)*}
从通配符匹配中排除结束大括号。
解决方案:
使用模式修饰符sU将在PHP中获得所需的匹配。
例子:
preg_match('/(.*)/sU', $content, $match);
来源:
模式修饰符
在基于java的正则表达式中,可以使用[\s\ s]。