정규식에서 [-az]와 [az]의 차이점은 무엇입니까?

정규식에서 [-az]와 [az]의 차이점은 무엇입니까?

-정규식에서 [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 소문자 와 일치합니다.az 그리고하이픈 -.

이것은 Perl 문서에 문서화되어 있습니다.:

목록에서 "-" 문자는 문자 범위를 지정하므로 az는 "a"와 "z"(포함) 사이의 모든 문자를 의미합니다. "-" 또는 "]" 자체가 클래스의 멤버가 되도록 하려면 이를 목록의 시작 부분(아마도 "^" 뒤)에 넣거나 백슬래시로 이스케이프 처리하세요. "-"가 목록 끝 부분에 있고 종결자 "]" 바로 앞에 있는 경우에도 문자 그대로 해석됩니다.

답변2

선행 빼기 기호는 그룹 내에 리터럴 빼기 문자를 포함하는 데 사용됩니다. 그룹의 끝에 있을 수도 있습니다. 비교하다:

$ echo abc- | grep [w-x]

$ echo abc- | grep [w-x-]
abc-
$ echo abc- | grep [-w-x]
abc-

시작이나 끝이 아닌 경우 해당 기능은 에서와 같이 범위를 설명하는 것입니다 w-x.

관련 정보