pcre字符类与范围中的字符不匹配

时间:2012-05-28 18:30:17

标签: regex pcre

8启用了pcre,我试图匹配\ p {Po}组加上一堆其他东西。

我想排除&符号。如何从课堂中排除特定角色?

-- lua btw    
local utf8_general_punctuation_reg = "[\\p{Po}\\p{Cc}\\p{Cs}\\p{Pc}\\p{Pe}\\p{Ps}\\p{Pf}\\p{Pi}\\p{Sm}\\x{2100}-\\x{2123}\\x{2600}-\\x{26ff}]+"

提前致谢!

BTW \ p {Po}适用于utf8 http://www.fileformat.info/info/unicode/category/Po/list.htm

只需添加以下答案中的作品:

local utf8_general_punctuation_reg = "[\\p{Po}\\p{Cc}\\p{Cs}\\p{Pc}\\p{Pe}\\p{Ps}\\p{Pf}\\p{Pi}\\p{Sm}\\x{2100}-\\x{2123}\\x{2600}-\\x{26ff}]+(?<!(&|\\.|:))"

1 个答案:

答案 0 :(得分:1)

你可以使用负面的lookbehind。我不熟悉pcre语法。

[abc](?<!b)

该正则表达式首先允许a或b或c,只看Unicode属性允许不同的字符,然后禁止带有负向lookbehind的b字符。

上面的正则表达式最后会匹配a和c,但不会匹配b。