我试图匹配一些具有简单结构的短字符串代码:
我想使用
Pattern.COMMENT
选项来格式化我的模式:String pat = "(?x) ([0-9]{5}) : ([a-zA-Z]+ [_ ] [0-9]+) ";
这种模式在 https://regex101.com/r/oW8vQ4/1 上运行良好。
但是,在 Java 中,这一行:
"31500:STR 200".matches(pat)
产生错误。
为什么这里返回false?即使
[_ ]
在字符类中启用,Pattern.COMMENT
也不应该与空格匹配吗? 最佳答案
我认为问题在于您需要对字符类中的空间进行转义。来自 http://www.regular-expressions.info/freespacing.html
试试这个模式 - 只是在空格前添加了 \\
......但我自己没有测试过。
String pat = "(?x) ([0-9]{5}) : ([a-zA-Z]+ [_\\ ] [0-9]+) ";
关于java - 为什么模式会忽略字符类中的空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38808219/