文件中有以下内容
/**
some text
text1
text2
some 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
。
关于java - 正则表达式来找到这种模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684473/