与任何字母或标点符号都不匹配的Unicode正则表达式



我正在尝试创建一个unicode正则表达式,该正则表达式匹配除字母(任何语言(和标点符号.;:?!之外的所有字符。

例如字符串

abcd 123 kjd¥%/(".?:!

应该只匹配下面的粗体部分

abcd123kjd¥%/(">?:!

我知道P{L}+匹配除字母以外的所有字符,P{P}+匹配除标点符号以外的所有单词。如何将这两个正则表达式字符串组合为一?我试过简单地将P{L}+P{P}+组合在一起,但这并不能提供所需的匹配。我也试过写[^.;:?!]P{L}+,但这也不起作用。

如何组合一个或多个unicode正则表达式,或者是否有更好的正则表达式可以满足我的要求?

使用P{L}+P{P}+将匹配任何字母的1倍以上的对立面,然后匹配任何标点符号的1倍以下的对立面。

模式[^.;:?!]P{L}+与所列字符以外的任何字符匹配1倍,后跟任何字母的1倍以上。


您可以将p{L}(它将匹配任何类型的字母(添加到否定字符类中。根据Wiktor Stribiżew的建议,您可以添加p{Z}来匹配任何类型的空白。

[^p{Z}p{L}.;:?!]

Regex演示

最新更新