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

Ant*_*onZ 4 java regex

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

我想严格排除单词内的所有撇号。为此我正在使用(?<=[a-zA-Z])'(?=[a-zA-Z])

但是,我无法让它们一起工作来严格匹配单词内除撇号之外的所有标点符号。

我应该用什么?


例子:

my brother's这不应该匹配。

my brothers'这应该匹配。

my 'brother'这些应该匹配。

小智 5

您可以在此处组合三个条件。

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

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

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

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

解释:

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

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

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