【发布时间】:2016-01-27 16:02:17
【问题描述】:
我试图了解“整理符号”匹配是如何工作的,但我没有说出来。我理解这意味着匹配一个确切的序列,而不仅仅是字符,即:
echo "ciiiao" | grep '[oa]' --> output 'ciiiao'
echo "ciiiao" | grep '[[.oa.]]' --> no output
echo "ciiiao" | grep '[[.ia.]]' --> output 'ciiiao'
但是,第三个命令不起作用。是我错了还是我误解了什么?
我已阅读此正则表达式tutorial。
【问题讨论】:
-
[[.oa.]]将抛出“无效的排序字符”错误。双括号用于特定的字符类,如[[:alpha:]]。如果您想要确切的顺序,只需执行grep oa。 -
当我使用 C 语言环境时,
[[.ia.]]也是如此。与德语语言环境相同,第二个和第三个命令都失败了。 @MFrancone:你的语言环境是什么? -
排序规则用于排序并且是语言环境定义的。您不能像那样即时发明整理序列。特别是您链接到的文档的
RE Bracket Expression部分中的第 4 点说“如果字符串不是当前整理序列定义中的整理元素,或者整理元素没有与之关联的字符(例如,请参阅符号在 Collation Order 中显示的示例排序规则定义中,该符号将被视为无效表达式。”。因此,除非 oa/ia在您的语言环境中整理元素,否则它们可能毫无意义。 -
谢谢大家,我想整理符号的使用是不同的,因为我不知道“语言环境”的真正含义。我必须首先弄清楚...整理符号在哪里有用?