我有这个(德语)示例字符串
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
答案 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。