2013-07-28 199 views
0

我想找到字符串中的以下模式:正則表達式模式不工作

"{xxxxx$ppp>5}&&{xxxxx.ppp==5}" 

我用正則表達式:

"[{a-z$.a-z==><0-9}||&&{a-z$.a-z==><0-9}]" 

但在這種情況下,字符"&&"不包括在字符串。有人可以告訴正則表達式模式有什麼問題

+4

請通過一些[正則表達式(HTTP:// WWW。 regular-expressions.info/tutorial.html)[教程](http://regexone.com/) –

+0

你想找到確切的模式? – Robadob

+0

{xxxxx \\ $ ppp> 5}(&&)?{xxxxx \\。ppp == 5} 匹配字符串「{xxxxx $ ppp> 5} && {xxxxx.ppp == 5}」和「{ xxxxx $ ppp> 5} {xxxxx.ppp == 5}「 – Robadob

回答

0

試試這個正則表達式:

// prints true 
System.out.println("{xxxxx$ppp>5}&&{xxxxx.ppp==5}" 
     .matches("\\{[a-z]+\\$[a-z]+>[0-9]\\}&&\\{[a-z]+\\.[a-z]+==[0-9]\\}")); 

編輯:(響應低於OP的評論)

String input = "{xxxxx$ppp>5}&&{xxxxx.ppp==5}"; 
Matcher matcher = Pattern.compile("\\{[a-z0-9]+[$.][a-z0-9]+[><=]=?[0-9]\\}") 
         .matcher(input); 
while (matcher.find()) { 
    System.out.println(matcher.group()); // {xxxxx$ppp>5} 
}          // {xxxxx.ppp==5} 
+0

正確的正則表達式是」[{a-zA-Z $ .a-zA-Z ==> 0-9} \\ && {a-zA-Z $ .a-zA-Z ==><0-9}]「自己找到了 – Phalguni

+1

您是否意識到使用'[]'使它成爲正則表達式字符類?這意味着你的正則表達式可能會匹配你的輸入字符串反向(或任何其他排列)。 –

+0

你的正則表達式用「&&」獲取所有東西,但我想要的只是排除&&的模式。即在{} – Phalguni

0
\\{[a-zA-Z]+\\$[a-zA-Z]+>5}&&{[0-9]+\\.[a-zA-Z]+==[0-9]+\\} 

從看你以前的question,我假設你想要xxx和ppp是任何字母字符串,而5是任何數字字符串。

+0

我在線程「main」java.util.regex.PatternSyntaxException中發生以下異常異常:非法重複 {[a-zA-Z] + \ $ [a-zA-Z] +> 5}(&&){{ [0-9] + \。[a-zA-Z] + == [0-9] +} \t at java.util.regex.Pattern.error(Unknown Source) \t at java.util.regex。 Pattern.closure(來源不明) \t在java.util.regex.Pattern.sequence(來源不明) \t在java.util.regex.Pattern.expr(來源不明) \t在java.util.regex.Pattern中。編譯(未知源代碼) – Phalguni

+0

忘記逃離{},我的壞。 – Robadob

+0

嘿它仍然會拋出異常。我自己找到了解決方案。正確的正則表達式是「[{a-zA-Z $ .a-zA-Z ==><0-9} \\ && {a-zA-Z $ .a-zA-Z ==><0-9 }]「 – Phalguni