java - 正则表达式如何匹配所有标点符号但排除某些条件

标签 java regex

我可以使用 \p{Punct}匹配所有标点符号(包括下划线)。

我想在一个词中排除所有撇号。为此,我使用 (?<=[a-zA-Z])'(?=[a-zA-Z])

但是我不能让它们一起工作来匹配单词中除了撇号之外的所有标点符号。

我应该使用什么?


例子:

my brother's这不应该匹配。

my brothers'这应该匹配。

my 'brother'这些应该匹配。

最佳答案

您可以在这里组合三个条件。

  1. 匹配除撇号以外的所有标点符号 '使用 [\p{Punct}&&[^']]

  2. 匹配所有后面没有字母的撇号。

  3. 匹配所有前面没有字母的撇号。

正则表达式: [\p{Punct}&&[^']]|(?<![a-zA-Z])'|'(?![a-zA-Z])

解释:

  • [\\p{Punct}&&[^']]从标点符号类中排除撇号。

  • (?<![a-zA-Z])'匹配前面没有字母的撇号。

  • '(?![a-zA-Z])匹配后面没有字母的撇号。

关于java - 正则表达式如何匹配所有标点符号但排除某些条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416280/

相关文章:

c++ - Regex_search C++

javascript - RegEx 函数无法删除非法字符?

javascript - 如何在 JavaScript 中使用正则表达式替换字符串

c# - RegularExpressionValidator 控件中以下正则表达式的问题

java - Seam 使用凭证自动登录

java - 抽象类方法 - 实例化子类对象?

java - 通过 eclipse 将应用程序部署到应用程序引擎时出现客户端错误 (400)

java - 如何使用apache camel从mysql表中读取数据并写入另一个表

Java 和 SQLite [SQLITE_ERROR] SQL 错误或缺少数据库 ()

javascript - JS 正则表达式匹配单词,排除斜杠包围的单词