2017-07-31 33 views
0

正在使用JAVA做WordXml parsar。如何使一些场景的正则表达式模式

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

说明:在open close里面必须有整数值。

Folloing模式我将需要检查。

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

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

所以,请给我建议。有人请告诉我。

+0

尝试一下https://regex101.com/ –

+0

“有人可以为我做这个吗?”是完美的,表明你不知道你在哪里,所以不提供代码,它有助于你做了什么 – azro

+0

使用'str.contains(“(F(1)= 44)”)''。 – saka1029

回答

1

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

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

+0

thnks。它真的很有帮助。但是,String text =(text text(text)text); \t String text1 =(F(1)= 44); \t String text2 =(text text [text] text); \t String text3 = [text text(text)text]; \t \t这是所有单独的字符串,现在你给text1正则表达式模式。我试过其他senarios但没有工作。 –

+0

你是什么意思@sathishanish我没有得到你 –

+0

@sathishanish如果这个单独的文本检查我的编辑希望这可以帮助你 –