-
정규식에서 [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
. from부터 [-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
.