gpt4 book ai didi

perl - perl 和 sed 中的相同正则表达式工作方式不同

转载 作者:行者123 更新时间:2023-12-01 00:02:32 24 4
gpt4 key购买 nike

好吧,也许 unicode 或其他有问题,但代码说明了一切:

$ cat leo
сказывать
ссказываю
сказав
BladeMight@Chandere ~ 23:24:58
$ cat leo | perl -pe 's/^с+каз/Рассказ/g'
Рассказывать
ссказываю
Рассказав
BladeMight@Chandere ~ 23:25:00
$ cat leo | sed -r 's/^с+каз/Рассказ/g'
Рассказывать
Рассказываю
Рассказав

我有文件 leo,内容是西里尔文,所以我想用 perl -pe 中的正则表达式 ^с+каз 替换错误的地方>,但它只替换只有 1 个 с(西里尔字母)的那些,例如+ 在这种情况下什么都不做(并且对于非西里尔文它工作正常),尽管在 sed -r 中它工作得很好。为什么会这样?

最佳答案

Perl 需要被告知您的源代码是 UTF-8 (-Mutf8) 并且它应该将 stdin 和 stdout 视为 UTF-8 (-CS) .

$ cat leo | perl -Mutf8 -CS -pe 's/^с+каз/Рассказ/g'
Рассказывать
Рассказываю
Рассказав

关于perl - perl 和 sed 中的相同正则表达式工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59111162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com