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

问题描述

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

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

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

  3. 匹配所有不带字母的撇号。

[\p{Punct}&&[^']]|(?<![a-zA-Z])'|'(?![a-zA-Z])

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

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

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

解决方法

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

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

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

我应该使用什么?


例子:

my brother's 这应该不匹配。

my brothers' 这应该匹配。

my 'brother' 这些应该匹配。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”