我想知道以下正则表达式是否返回false。我看不到“ |”不匹配。有任何想法吗?以及如何允许模式匹配“ |”?

Pattern pattern = Pattern.compile("([^\\*|\\\\|\\{|\\}|\\[|\\]|=|>|<])*");
boolean valid = pattern.matcher("|").matches();


提前致谢。

最佳答案

[^ ]表达式匹配方括号中没有的任何字符。由于|在方括号中,因此不匹配。所有字符(除了少数字符,例如\])都直接在[^ ]表达式内使用。

我认为您的意思是这样的:

([^*\\{}[\]=><])*


除了这些字符外,它与任何其他字符都匹配:

*\{}[]=><


要将其放入字符串中,您可以这样做:

"([^*\\\\{}[\\]=><])*"

09-10 03:35
查看更多