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

标签 java regex parsing pattern-matching regex-group

我正在使用 JAVA 进行 WordXml 解析。

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

注意:开盘价内部必须有整数值。

我需要检查以下模式。

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

但是,显然不知道如何为上述情况创建正则表达式模式。

所以,请推荐我。任何人请告诉我。

最佳答案

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

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

关于java - 如何为某些场景制作正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45409917/

相关文章:

java - 如何将我的随机值放入java中的数组中?

JavaFX:将图像插入 GridPane

javascript - 为什么 Javascript 不支持lookbehind断言?

java - 在 Java 中使用 Gson 解析来自 HTTP 请求的 JSON 响应

java - If else vs switch with stack 逻辑

java - 同一个文件中的两个类

Python提取文件名正则表达式的一部分

python - 正则表达式用括号外的逗号分割字符串,并具有多个级别的python

string - 从字符串中解析多个数字 C#

python - 使用 dateutil 解析多个日期