Java中的模式匹配与标点符号

时间:2015-01-15 00:08:11

标签: java regex

我想提供支持以匹配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}|$),但即使这样也失败了

1 个答案:

答案 0 :(得分:1)

您的模式不匹配,因为“rose”中的'e'不是标点符号或空白字符。

除了模式中的ros?之外,只有s只是可选的。

注意:Unix shell中的?*不是“Linux正则表达式”,而是“shell globbing”通配符。 Linux中的正则表达式(grep,sed,awk)都使用.作为单个替换字符。