4

我目前有点卡在 Perl 中使用正则表达式(取自我之前的问题)来匹配来自非 ASCII 语言环境(即德语变音符号)的单词字符。

我已经尝试了各种方法,例如设置正确的语言环境(使用 setlocale),将我从 MySQL 接收到的数据转换为 UTF8(使用 decode_utf8)等等......不幸的是,无济于事。谷歌也没有太大帮助。

是否有机会获得以下正则表达式语言环境感知,以便

$street = "Täststraße"; # I know that this is not orthographically correct
$street =~ s{
               \b (\w{0,3}) (\w*) \b
            }
            {
               $1 . ( '*' x length $2 )
            }gex;

最终返回$street = "Täs*******"而不是"Tästs***ße"?

4

1 回答 1

6

我希望正则表达式会导致“Täs*******”。这就是我在 utf-8 编码文件中使用上面的代码“使用 utf8”时得到的结果。

(如果一切都是 latin-1,这会改变正则表达式引擎的行为。因此存在utf8::upgrade. 参见Unicode::Semantics。)

编辑:我看到你修复了你的帖子,我们同意预期的结果。基本上,当你想在你的正则表达式上使用 Unicode 语义时,使用 Unicode::Semantics。

于 2009-10-12T07:44:29.983 回答