是否可以在没有[^...]
的情况下使用\P{...}
进行编写?
#!/usr/bin/env perl
use warnings;
use 5.012;
use utf8;
my $string = '_${Hello}?${World}!';
$string =~ s/[^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}]/-/g;
say "<$string>";
答案 0 :(得分:6)
嗯,可能但我认为我不认为这是一种改进:
#!/usr/bin/env perl
use warnings;
use 5.012;
use utf8;
my $string = '_${Hello}?${World}!';
$string =~ s/(?=\P{Alphabetic})
(?=\P{Mark})
(?=\P{Decimal_Number})
(?=\P{Connector_Punctuation}) . /-/xgs;
say "<$string>";
有多个积极的前瞻,他们都必须成功。所以它匹配一个不是字母而不是Mark而不是Decimal_Number而不是Connector_Punctuation的字符(.
),就像否定的字符类一样。
我添加了/s
修饰符,因为原始正则表达式会匹配换行符(尽管您的示例字符串没有)。我添加了/x
,所以我可以添加一些空格并将其分成多行。
无论如何,你对角色课有什么看法?