RegEx在Perl中并不匹配:为什么?

时间:2015-12-26 19:46:00

标签: regex perl

我有这个(德语)示例字符串

Gesundheit und einen besseren Fußball- u. Musikgeschmack!

我希望匹配- u.

连接的字词

在这种情况下,我希望匹配Fußball- u. Musikgeschmack 我编写了一个RegEx表达式,它完全正确,但如果我将它作为Perl脚本的一部分运行,它似乎有所不同。

我的RegEx是这样的:[ |^]*([A-Za-zÄäÖöÜüß]+[\-\\][ ]*[u][\.][A-Za-zÄäÖöÜüß ]+) 根据这个允许交互式RegEx测试的网站,它选择它应该:https://regex101.com/r/tN6gB4/1

perl给我的是ball- u. Musikgeschmack

我在匹配ß的区块中有德语特殊字符ball,所以我不明白为什么它不匹配Fußball

1 个答案:

答案 0 :(得分:0)

确实,@ sszizhev似乎是对的,它的use utf8;问题:这个pragma说源文件中的字符串文字是utf8编码的,因此允许Perl将它们解码为Unicode并正常运行

use utf8;
binmode(STDOUT, ":utf8");

$s = "Gesundheit und einen besseren Fußball- u. Musikgeschmack!";

$s=~/[ |^]*([A-Za-zÄäÖöÜüß]+[\-\\][ ]*[u][\.][A-Za-zÄäÖöÜüß ]+)/;
print($1)

输出:

Fußball- u. Musikgeschmack

有关详细信息,另请参阅perlunicode