【问题标题】:Matching a border of a russian word with \b用 \b 匹配俄语单词的边框
【发布时间】:2014-11-21 03:21:33
【问题描述】:

这是一个错误还是我在 CentOS 6.5 与股票 perl 5.10.1 上做错了什么(尝试匹配多人游戏聊天日志中的俄语脏话时)?

# echo блядь | perl -ne 'print if /\bбля/'

# echo блядь | perl -ne 'print if /бля/'
блядь

# echo $LANG
en_US.UTF-8

为什么第一个命令不打印任何东西?

【问题讨论】:

  • uUnicodemodifier'print if /\bбля/u'对perl不熟悉,只是猜测。
  • 不幸的是,/u 不起作用:在 -e 第 1 行,“/\bхуй/u”附近的操作员预期的位置找到了裸字

标签: regex perl centos6.5 perl5.10


【解决方案1】:

你必须告诉 Perl 源代码包含 UTF-8 (use utf8),并且输入 (-CI) 和输出 (-CO) 是 UTF-8 编码的:

echo 'помёт' | perl -CIO -ne 'use utf8; print if /\bпомё/'

【讨论】:

  • 很好的答案!我正在管理几台俄罗斯服务器,多年来一直在想,为什么我的 perl oneliners 不能在 CLI 上工作
  • 想知道为什么不-CS (也带有stderr)例如perl -Mutf8 -CS -ne 它更短:) :)
猜你喜欢
  • 2018-08-25
  • 2010-10-23
  • 1970-01-01
  • 2018-01-23
  • 2017-02-02
  • 2016-09-25
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多