我會在字符串上匹配符號「<」,「>」,「{」,「}」。我用Java字符串匹配括號
String text="<";
System.out.println(text.matches("(\\W)*([{]|[}]|[<]|[>])"));
//output: false.
,一切都很好,只是需要以匹配後的空間「<」。任何建議? 謝謝
我會在字符串上匹配符號「<」,「>」,「{」,「}」。我用Java字符串匹配括號
String text="<";
System.out.println(text.matches("(\\W)*([{]|[}]|[<]|[>])"));
//output: false.
,一切都很好,只是需要以匹配後的空間「<」。任何建議? 謝謝
我相信這個正則表達式應該可以解決你的問題。我清理了一下代碼,並添加了一個積極的前瞻<,確保在<之後有空格。如果你還沒有使用lookahead,我建議閱讀關於它們的http://www.regular-expressions.info/lookaround.html。
正則表達式:"(\\W)*([{>}]|\\<(?=))"
它給出無效的常規異常。 – Discipulos
我在PCRE正則表達式中檢查過它。我不知道爲什麼它會在Java正則表達式中失敗。我會研究它。 –
由於Java的差異,我的正則表達式被重新構造。他們對特殊字符的解釋不同我現在已經測試了一個java字符串。 –
的問題是發佈的代碼之外。謝謝大家。
你爲什麼不把所有這些角色聚合到同一個角色類中? '''text.matches(「(\\ W)*([{} <>])」))'' – f1sh
您可以像'\ {'而不是'[{]'這樣做來匹配一個字符;像'text.matches(「(\\ W)*(\ {| \} | \ <|\>)」)';但這不會回答你的問題。 ''你是什麼意思'需要'後面的空格?它只匹配'>'而不是'>'? – NatNgs
它只匹配「<」(注意空格)而不匹配「<」。 – Discipulos