java - Java 中标点符号的模式匹配

标签 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}|$) ,但即使这样也失败了

最佳答案

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

除了模式中的 ros? 之外,仅使 s 成为可选。

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

关于java - Java 中标点符号的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954779/

相关文章:

Python 正则表达式 : Matching bracket/parenthesis pairs

regex - 正则表达式对比字符串解析

python - 如何使用 Python 正则表达式来匹配 MATLAB 的函数语法?

javascript - 日期的正则表达式?

java - 无法在java中将大文件(>1gb)转换为字节数组

java - 我应该如何使用Hashmap来存储对象?

java - 请解释一下这种情况下的Java继承

java - 我需要一个 Java 正则表达式

java - Vaadin 7 在组件之间触发自定义事件

Java 用户名密码数组替换为星号