-
正则表达式中的[ az] 和 [az] 有什么区别? [ -
az]中的第一个减号是什么意思?
默认情况下/etc/adduser.conf
(例如):
#check user and group names also against this regular expression.`
#NAME_REGEX="^[a-z][-a-z0-9_]*\$"
答案1
仅当连字符不是方括号字符类中的第一个或最后一个字符时,它才具有特殊含义。
[a-z]
a
匹配从到 的所有 ASCII 小写字母z
。匹配从到 的[-a-z]
所有 ASCII 小写字母a
z
和连字符-
。
在列表中,“-”字符指定字符范围,因此 az 表示“a”和“z”(含)之间的所有字符。如果您希望“-”或“]”本身成为类的成员,请将其放在列表的开头(可能在“^”之后),或使用反斜杠将其转义。当“-”位于列表末尾、就在结束符“]”之前时,也按字面意思理解。
答案2
开头的减号用于将文字减号字符包含在组中。它也可能位于该组的末尾。比较:
$ echo abc- | grep [w-x]
$ echo abc- | grep [w-x-]
abc-
$ echo abc- | grep [-w-x]
abc-
当它不在开头或结尾时,它的功能是描述一个范围,如 中w-x
。