例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
例如,这个正则表达式
(.*)<FooBar>
将匹配:
abcde<FooBar>
但我如何让它在多行之间匹配呢?
abcde
fghij<FooBar>
当前回答
我想在Java中匹配一个特定的if块:
...
...
if(isTrue){
doAction();
}
...
...
}
如果我使用regExp
if \(isTrue(.|\n)*}
它包含方法块的右大括号,所以我使用
if \(!isTrue([^}.]|\n)*}
从通配符匹配中排除结束大括号。
其他回答
一般来说,。不匹配换行符,因此try ((.|\n)*)<foobar>。
"."通常不匹配换行符。大多数正则表达式引擎允许您添加s标志(也称为DOTALL和SINGLELINE)来使“.”也匹配换行符。 如果失败了,你可以做一些类似[\S\ S]的事情。
如果您正在使用Eclipse搜索,您可以启用“DOTALL”选项来生成'。'匹配任何字符,包括行分隔符:只需在搜索字符串的开头添加“(?s)”。例子:
(?s).*<FooBar>
([\ s \ s] *) < FooBar >
点匹配除换行符(\r\n)以外的所有字符。所以使用\s\ s,它将匹配所有字符。
试试这个:
((.|\n)*)<FooBar>
它基本上是说“任何字符或换行符”重复0次或多次。