awk模式中方括号使用疑问:字符类是否必须加外层方括号及是否相同?
关于正则表达式POSIX字符类的两个问题解答
问题1:使用[:alpha:]、[:digit:]时,外层方括号[...]是否必需?
是的,必须加外层方括号。因为[:alpha:]这类属于POSIX命名字符类,它们本身不是独立的正则元字符,只是字符组的"命名标记"。如果直接写[:alpha:],正则引擎会把它当成匹配[、:、a、l、p、h、a、:、]这些单个字符的集合,完全达不到匹配任意字母的效果。只有把它放在外层方括号里,写成[[:alpha:]],才会被识别为匹配任意字母的字符组。
问题2:这个外层方括号和[a-zA-Z]、[0-9]里的方括号是否完全一致?
完全一致。不管是包裹POSIX命名类的[[:alpha:]],还是包裹字符范围的[a-zA-Z],这里的外层方括号都是正则语法里的字符组定义符号,作用都是将内部的内容(不管是命名类、字符范围还是单个字符)整合为一个"匹配单个字符的集合",语法规则和功能没有任何区别。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

