我的档案内容如下
/**
some text
text1
text2
some text
**/
我想检查/ text ** /之间是否包含“ text1”或“ text2”,如上面的示例所述。
我尝试下面的代码
Pattern p = Pattern.compile("//*/*.*?text1.*?/*/*/");
Matcher m = p.matcher(fileAsString);
while (m.find()) {
System.out.println("match found");
}
但是它有两个缺点。这些是 :-
1)它检查/ ** text1 ** /之间的text1,但当text1在下一行时不起作用
2)我不确定如何在此正则表达式中检查两个字符串中的任何一个,即“ text1”或“ text2”?
最佳答案
您可以使用:
Pattern p = Pattern.compile("/\\*\\*.*?(?:text1|text2).*?\\*\\*/", Pattern.DOTALL);
需要
Pattern.DOTALL
以确保匹配多行文本*
需要使用\\*
进行转义(?:text1|text2)
是不可捕获的替代,必须与text1
或text2
匹配。