我想提供支持以匹配Java中的标点符号和正则表达式字符。对标点符号的支持工作正常,但即使是简单的正则表达式也是如此。
这是我的模式:
(\s\p{Punct}|^\p{Punct}|\s|^)ros?(\s|\p{Punct}|$)
我尝试匹配的内容:rose
find()方法为此模式返回false。我最初认为根本原因是模式的{Punct}
部分所以我尝试在我的单元测试中将我的正则表达式更改为(\s\p{Punct}|^\p{Punct}|\s|^)ro?e(\s|\p{Punct}|$)
,但即使这样也失败了
答案 0 :(得分:1)
您的模式不匹配,因为“rose”中的'e'
不是标点符号或空白字符。
除了模式中的ros?
之外,只有s
只是可选的。
注意:Unix shell中的?
和*
不是“Linux正则表达式”,而是“shell globbing”通配符。 Linux中的正则表达式(grep,sed,awk)都使用.
作为单个替换字符。