正则表达式在页面上找到两个单词

Dmi*_*edv 26 regex intellij-idea

我正在尝试查找包含单词"text1"和"text2"的所有页面.我的正则表达式:

text1(.|\n)*text2 
Run Code Online (Sandbox Code Playgroud)

它不起作用.. 在此输入图像描述

Onl*_*Cop 31

如果您的IDE支持s(单行)标记(因此.字符可以匹配换行符),您可以使用以下内容搜索您的项目:

(text1).*(text2)|\2.*\1
Run Code Online (Sandbox Code Playgroud)

s标志的示例

如果IDE不支持该s标志,则需要使用[\s\S]以下代码.:

(text1)[\s\S]*(text2)|\2[\s\S]*\1
Run Code Online (Sandbox Code Playgroud)

用例子 [\s\S]

一些语言使用$1$2到位的\1\2,所以你可能需要改变这种状况.

编辑:

或者,如果您只想匹配一个文件包含两个字符串(但实际上没有选择任何内容),您可以使用预测:

(?s)^(?=.*?text1)(?=.*?text2)
Run Code Online (Sandbox Code Playgroud)

这并不关心参数的顺序(或数字),对于您要搜索的每个附加文本,您只需附加另一个(?=.*?text_here).这种方法很好,因为你甚至可以包含正则表达式而不仅仅是纯字符串.


vks*_*vks 10

text0[\s\S]*text1
Run Code Online (Sandbox Code Playgroud)

试试这个.这应该为你做.

这样做是匹配所有包括多线.类似于.*?s旗帜.

\s需要照顾spaces,newlines,tabs \S照顾任何非空格字符.