我正在使用 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/