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

时间:2017-07-31 07:34:58

标签: java regex parsing pattern-matching regex-group

使用JAVA进行WordXml解析。

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

注意:打开关闭内部必须有整数值。

Folloing模式我需要检查。

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

但是,显然不知道如何在senarios之上制作正则表达式。

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

1 个答案:

答案 0 :(得分:1)

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

  • 一个或多个字母[a-zA-Z]+
  • 后跟括号\(\d+\)
  • 之间的一个或多个degit
  • 后跟一个或多个空格\s*
  • 然后是等于=
  • 然后是一个或多个空格\s*
  • 然后是一个或多个degit \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