spkgender=$(perl -ane ' s/.*gender\:\W*(.).*/lc($1)/ei && print; ' <$rdm)
这是正则表达式,它从“性别:男性”中提取M
,但不适用于Unicode。
如何使其与unicode一起使用?
它不适用于“性别:Мужской”-看起来\W
“吞噬”了所有unicode符号。
答案 0 :(得分:-1)
使用/u
正则表达式修饰符。来源:https://perldoc.perl.org/perlre.html
spkgender=$(perl -ane ' s/.*gender\:\W*(.).*/lc($1)/uei && print; ' <$rdm)
或者,使用官方的POSIX字符类。代替\W
使用[[:blank:]]
。据我所知,它支持Unicode。
此外,请确保总体上正确使用Unicode。参考:https://perldoc.perl.org/perlunicode.html
当字符串来自标记为Unicode的外部源时
-C命令行选项可以指定程序的某些输入是Unicode,并且您的Perl代码可以读取该值,请参见perlvar中的$ {^ UNICODE}。