我用这个命令grepping(Ubuntu)多个文件:
LANG=en_US.UTF-8 grep -P -R -i -I -H -A1 "^name#.*?r[AÀÁÂÃÄaàáâãä]f[AÀÁÂÃÄaàáâãä][EÈÉÊËeèéêë]l s[IÌÍÎÏiìíîï]m[OÔÒÓÕÖoòóôõö].*?#.*?#.*?#.*?#.*?\$" image_args_*
它返回几个结果,其中包括:
image_args_search_134.txt:name#Rafael Simões Vieira#1767###Emerenciana Rodrigues de Oliveira
image_args_search_134.txt-#bati.#134#somelinkhere.com##
--
但如果我添加[Ee]作为运算符的一部分,如下所示:
LANG=en_US.UTF-8 grep -P -R -i -I -H -A1 "^name#.*?r[AÀÁÂÃÄaàáâãä]f[AÀÁÂÃÄaàáâãä][EÈÉÊËeèéêë]l s[IÌÍÎÏiìíîï]m[OÔÒÓÕÖoòóôõö][EÈÉÊËeèéêë].*?#.*?#.*?#.*?#.*?\$" image_args_*
那我就什么都得不到
为什么?谢谢!
2条答案
按热度按时间but5z9lq1#
从我的观察来看,看起来你想使用所有适合给定字母的变音符号。在正则表达式的概念中,你可以使用 * 等价类 *。
等价类表达式应表示属于等价类的一组排序元素,如排序顺序中所述。只能识别主要等价类。应通过将等价类中的任何一个排序元素包含在括号-equal中来表示该类(
[=
和=]
)分隔符。例如,如果'a'、'à'和'-'属于相同的等价类,则[[=a=]b]
、[[=à=]b]
、和[[=â=]b]
都等价于[aàâb]
。如果排序元素不属于等价类,则等价类表达式应被视为排序符号。所以你可能想写一些基于:
请注意,这在PCRE中并不存在,因此您只需要使用扩展正则表达式:
z4iuyo4d2#
我只看到你的问题,如果我使用一些未安装的区域设置。
请验证所需的区域设置是否已激活(未被前导
#
推荐)(The文件
/etc/locales.gen
可以通过删除注解#
来根据您的需要进行配置)确保真正生成了这些配置的区域设置: