如何为某些场景制作正则表达式模式

How to make regex pattern for some scenarios

正在使用 JAVA 做 WordXml 解析器。

现在我想检查 (F(1) = 44) 这种类型的模式是否会出现在段落中。

注意:open close里面必须有整数值。

我需要检查以下模式。

(text text (text) text)
(F(1) = 44)
(text text [text] text)
[text text (text) text]

但是,显然不知道如何为上面的 senarios 制作正则表达式模式。

所以,请建议我。任何人都请告诉我。

您可以使用此正则表达式 \([a-zA-Z]+\(\d+\)\s*=\s*\d+\),这意味着

  • 一个或多个字母 [a-zA-Z]+
  • 后跟一个或多个括号之间的数字\(\d+\)
  • 后跟一个或多个 space \s*
  • 然后等于 =
  • 然后是一个或多个 space \s*
  • 后跟一个或多个数字\d+
  • 括号内的所有内容\([a-zA-Z]+\(\d+\)\s*=\s*\d+\)

像这样的模式:

String[] texts = new String[]{"(text text (text) text)",
    "(F(1) = 44)",
    "(text text [text] text)",
    "[text text (text) text]"};
String regex = "\([a-zA-Z]*\(\d+\)\s*=\s*\d+\)";

for (String s : texts) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(s);
    if (matcher.find()) {
        System.out.println("There are match " + matcher.group());
    } else {
        System.out.println("No match occurred");
    }
}

输出

No match occurred
There are match (F(1) = 44)
No match occurred
No match occurred

regex demo