【发布时间】:2013-01-30 22:33:41
【问题描述】:
我有这个正则表达式。
my ( $word ) = $_ =~ /(\w{2,})/xms;
它无法正确捕获具有 unicode 的单词。我能够解决它
my ( $word ) = $_ =~ /(\w{2,})/uxms;
但/u 功能仅在 5.14 中可用。无论如何我可以在 5.10 中使单词匹配吗?
完整代码在这里:Dist::Zilla::Plugin::Test::PodSpelling
添加一些鲤鱼(正则表达式之前和之后)
Simões at /home/ccushing/perl5/perlbrew/perls/perl-5.16.2/lib/site_perl/5.16.2/x86_64-linux/Class/MOP/Method/Wrapped.pm line 162.
Sim at /home/ccushing/perl5/perlbrew/perls/perl-5.16.2/lib/site_perl/5.16.2/x86_64-linux/Class/MOP/Method/Wrapped.pm line 162.
还注意到只需将use 5.014 添加到文件顶部即可解决问题。在正则表达式之前添加utf8::upgrade( $_ ) 并不能解决问题。
【问题讨论】:
-
Afaik
\w应该匹配 5.10 中的 unicode 字符。确保你的字符串被正确编码并且 Perl 知道它是 unicode 格式。