使用现成的字符类并进一步限制它

Lum*_*umi 7 regex unicode perl

Perl正则表达式中提供了许多现成的字符类,例如\dor \S,或新的Unicode grokkers,例如\p{P}匹配标点字符.

现在让我们说我想匹配所有标点符号\p{P}(相当多的标点符号,而不是你想要手工输入的东西) - 除了一个之外的所有符号,除了好的旧komma(或逗号,)之外.

有没有办法指定这个要求,而不是扩展方便的角色类并手工拿走komma?

ike*_*ami 9

$ unichars -au '\p{P}' | wc -l
598
Run Code Online (Sandbox Code Playgroud)

双重否定:

/[^\P{P},]/

$ unichars -au '[^\P{P},]' | wc -l
597
Run Code Online (Sandbox Code Playgroud)

通过前瞻/后视来"和":

/\p{P}(?<!,)/

$ unichars -au '\p{P}(?<!,)' | wc -l
597
Run Code Online (Sandbox Code Playgroud)

unichars


ste*_*ema 7

试试这个

[^\P{P},]
Run Code Online (Sandbox Code Playgroud)

这是一个否定的字符类,它匹配除列出的字符之外的所有字符.

\P{P} 否定 \p{P}