【发布时间】:2017-02-02 14:37:35
【问题描述】:
如果我使用以下代码,正则表达式组不会显示预期的 unicode 字符串。有人可以向我解释我是否做错了,或者它是否可能是 perl 本身的一个内在问题。
echo 'éá'|perl -ne 'if ( /(\P{L}+)/ ) { print $1; }'
�
即使我考虑到这个explanation 并将 UTF-8 编码层添加到 perl,它仍然没有给我正则表达式组的字符串 'éá':
echo 'éá'|perl -CS -ne 'if ( /(\P{L}+)/ ) { print $1,$_; }'
éá
该组的输出似乎是空的,并且包含一个换行符。
非常感谢任何帮助。
【问题讨论】:
-
使用
/(\p{L}+)/,你使用了相反的正则表达式。 -
@WiktorStribiżew 的意思是
\P带有大写P表示不是其中之一,而\p带有小p是其中之一。 -
非常感谢您的快速回复。
-
欢迎使用 Stack Overflow 和 Perl 标签。第一个问题措辞非常好。 :)
-
您可以在 cmets 中使用反引号
`foo`进行代码高亮显示。我看不出问题中的代码有什么不同。