我想提供支持以匹配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}|$)
,但即使这样也失败了 最佳答案
您的模式不匹配,因为“ rose”中的'e'
不是标点符号或空格字符。
除了模式中的ros?
外,仅使s
仅是可选的。
注意:Unix shell中的?
和*
不是“ Linux正则表达式”,而是“ shell遍历”通配符。 Linux中的正则表达式(grep,sed,awk)都将.
用于单个替换字符。