我想提供支持以匹配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)都将.用于单个替换字符。

10-07 12:13