我想提供对 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)都使用 .
来替换单个字符。
关于java - Java 中标点符号的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954779/