【发布时间】:2022-01-18 07:43:04
【问题描述】:
这在使用 unicode 字符时不起作用(在 Ubuntu bash 中):
$ perl -pC -e's/[à]/a/gu' <<< 'à'
à
$ perl -pC -e's/[b]/a/gu' <<< 'b'
a
即使 PCRE 似乎支持它(至少根据regex101)。
我做错了什么?我在 perl 命令中缺少一些标志吗?
这在 javascript 中“正常工作”,所以如果我能在命令行中为此提供一个简单的单行器,我会使用 node ......但我仍然想知道为什么 perl 命令不起作用。
对于上下文:
我正在尝试使用 /[àâáãä]/a/g、/[òôóõö]/o/g 等替换来关联字典文件(即删除单词列表的重音等),因此我可以使用它来进行拼写检查重音-不敏感(例如在 IntelliJ Idea 中)。
基本上这些是制作“asciified”额外字典的步骤:
- 下载该语言的 .dic 文件(所有单词的列表)
- 使用 grep 过滤包含非 ascii/可替换字符的单词
- 连续使用正则表达式替换以使单词不区分重音
- 在 IDE 中导入 asciified .dic 文件(标准语言词典除外)
【问题讨论】:
-
我无法重现,它在新启动的 Ubuntu Docker 映像中对我来说工作正常(尽管我必须
bind 'set input-meta on'; bind 'set output-meta on'在 Bash 中启用 8 位 I/O)。
标签: regex perl unicode command-line utf-8