【发布时间】:2020-09-19 11:55:46
【问题描述】:
我正在尝试创建一个 unicode 正则表达式,它匹配除字母(任何语言)和标点符号 .;:?! 之外的每个字符。
例如字符串
abcd 123 kjd ¤%/(" .?:!
应该只匹配下面的粗体部分
abcd 123 kjd ¤%/(" .?:!
我知道\P{L}+ 匹配除字母之外的所有内容,\P{P}+ 匹配除标点符号之外的所有内容。如何将这两个正则表达式字符串合并为一个?我试过简单地将\P{L}+\P{P}+ 放在一起,但这并没有提供所需的匹配。我也试过写[^.;:?!]\P{L}+,但这也不起作用。
如何组合一个或多个 unicode 正则表达式,或者是否有更好的正则表达式可以满足我的要求?
【问题讨论】:
-
可以在否定字符类
[^ \p{L}.;:?!]regex101.com/r/7fVj9u/1中添加add\P{L} -
@第四只鸟谢谢你,正是我想要的。如果您愿意,可以将其发布为答案,我会接受。
-
其实结合
\P{L}和\P{P}这两个模式是[^\p{L}\p{P}]+,但它是does not seem to fetch your expected results。您只需要\p{P}的一个子集,因此更容易使用自定义集。 -
@Thefourthbird 发布答案时,使用
\p{Z}或\s代替常规空格可能会很方便。