我的档案内容如下

/**
 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)是不可捕获的替代,必须与text1text2匹配。

10-08 19:35