正则表达式找到这种模式?

萨克斯

我的档案内容如下

/** 
 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);
  1. Pattern.DOTALL 需要确保匹配多行文本
  2. * 需要使用 \\*
  3. (?:text1|text2)是非捕获的替代,需要匹配text1text2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章