java - 正则表达式来找到这种模式?

标签 java regex string

文件中有以下内容

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

关于java - 正则表达式来找到这种模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684473/

相关文章:

c# - .Net RegularExpressionValidator 与 Regex 类的匹配方式不同

regex - 查找第一个非零小数的位置

c# - 检查数组是否重复,只返回出现不止一次的项目

java - 在“>”上分割长字符串

Javascript内联用空字符串替换未定义

java - 如何验证以便用户仅输入整数

Javamail java.lang.IllegalStateException : Folder is not Open

java - 如何在 Linux 中使用 Java 将变量添加到文件路径?

java - SWING 应用程序挂起,消耗大量 CPU

从变量获得的 javascript 正则表达式在测试 : "is not a function" 时给出错误