我正在尝试创建一个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演示