Perl正则表达式中提供了许多现成的字符类,例如\d
或\S
,或者新的Unicode字符串,例如\p{P}
, which matches punctuation characters。
现在让我们说我想匹配所有标点符号\p{P}
(相当多的标点符号,而不是你想要手工输入的东西) - 除了一个之外的所有符号,除了好的旧komma(或逗号,,
)。
有没有办法指定这个要求,只需扩展方便的角色类并手工拿走komma?
答案 0 :(得分:9)
$ unichars -au '\p{P}' | wc -l
598
双重否定:
/[^\P{P},]/
$ unichars -au '[^\P{P},]' | wc -l
597
“和”通过前瞻/后视:
/\p{P}(?<!,)/
$ unichars -au '\p{P}(?<!,)' | wc -l
597
答案 1 :(得分:7)
试试这个
[^\P{P},]
这是一个否定的字符类,它匹配除列出的字符之外的所有字符。
\P{P}
否定\p{P}