我需要对包含非英语字符(西班牙语,法语,德语和俄语)的文本执行正则表达式匹配。
我希望比赛忽略大小写,因此对于英文字符,我只会使用/i
修饰符,但不适用于übermäßig这样的单词。
编写同时匹配übermäßig和ÜBERMÄßig的正则表达式的最简单方法是什么?并且可以使用相同的方法在Perl中将大写非英语字母转换为它们的小写字母吗?
最佳答案
它工作得很好
$ perl -E'use utf8; say "ÜBERMÄẞIG" =~ /^übermäßig\z/i ? "match" : "no match"'
match
$ perl -E'use utf8; say "ÜBERMÄSSIG" =~ /^übermäßig\z/i ? "match" : "no match"'
match
(
use utf8;
说源代码是使用UTF-8编码的。不可能以其他任何方式在脚本中包含这些字符。)我怀疑存在编码问题,这意味着您认为没有给Perl加上了“ß”。也可能是您使用的Perl较旧版本无法正确处理多字符折叠。一般而言,使用
/u
可能会有所帮助,但是对于本示例来说,这没有什么不同。关于regex - 非英文字符的不区分大小写的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12936299/