我正在尝试查找包含单词“text1”和“text2”的所有页面。
我的正则表达式:
text1(.|\n)*text2
它不起作用..
最佳答案
如果您的IDE支持s
(单行)标志(因此.
字符可以匹配换行符),则可以使用以下命令搜索项:
(text1).*(text2)|\2.*\1
Example with
s
flag如果IDE不支持
s
标志,则需要使用[\s\S]
代替.
:(text1)[\s\S]*(text2)|\2[\s\S]*\1
Example with
[\s\S]
有些语言使用
$1
和$2
代替\1
和\2
,因此您可能需要更改它们。编辑:
另外,如果您只想匹配一个文件包含两个字符串(但实际上不选择任何内容),则可以使用超前查找:
(?s)^(?=.*?text1)(?=.*?text2)
这与参数的顺序(或编号)无关,对于您要搜索的每个其他文本,您只需附加另一个
(?=.*?text_here)
即可。这种方法很好,因为您甚至可以包含正则表达式,而不仅仅是纯字符串。关于regex - 正则表达式在页面上找到两个单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26890991/