XRegExp:否定表达式

时间:2014-12-15 18:58:55

标签: regex unicode xregexp

以下XRegExp表达的否定表达是什么?

[\\p{Alphabetic}\\p{Nd}\\{Pc}\\p{M}]+

我使用matchChain()使用上面的表达式从句子中获取单词。

现在我将使用split()使用negate表达式来获得相同的结果,但每个单词都包含分隔符。

2 个答案:

答案 0 :(得分:2)

要取消\p{…},请使用\P{…}。例如,\p{L}的倒数为\P{L}

假设您在原始正则表达式中输入了拼写错误,且\\{Pc}应为\\p{Pc},则会变为:

[\\p{Alphabetic}\\p{Nd}\\p{Pc}\\p{M}]+

要取消这一点,只需将\\p{…}大写为\\P{…}

[\\P{Alphabetic}\\P{Nd}\\P{Pc}\\P{M}]+

也应该可以这样做:

[^\\p{Alphabetic}\\p{Nd}\\p{Pc}\\p{M}]+

答案 1 :(得分:0)

要否定角色类,您可以在类的开头添加一个^,因此在您的示例中

[^\\p{Alphabetic}\\p{Nd}\\p{Pc}\\p{M}]+

请注意,\p{…}可以取反为\P{…},但有一些陷阱:

[^\\p{Nd}] is the same of [\\P{Nd}]

但是

[\\P{Nd}\\P{Pc}] // wrong

将匹配任何东西!因为数字(Nd)绝对是非标点符号(Pc)