expr
이 유틸리티에서 정규식 일치가 어떻게 작동하는지 이해하는 데 도움을 줄 수 있는 사람이 있습니까 ? 나는 매뉴얼 페이지를 읽었으며 여기에 발췌가 있습니다.
STRING : REGEXP
anchored pattern match of REGEXP in STRING
그러나 나는 그것이 어떻게 작동하는지 이해하지 못합니다. 나는 몇 가지 테스트를 수행했습니다.
[root@192 ~]# expr "abc" : '.*'
3
[root@192 ~]# expr "abc" : 'b.*'
0
[root@192 ~]#
expr
이 두 명령은 무엇을 하고 있나요? 첫 번째 명령의 경우 expr
첫 번째 문자에서 일치하는 항목을 찾은 것으로 보이며 abc
일치하는 항목의 길이가 보고됩니다. 그런데 왜 두 번째 명령을 생성합니까 0
? 나는 여기서 논리를 이해하지 못합니다.
그런데, 정규 표현식이 어떻게 작동하는지 알고 있습니다.
답변1
참조된 맨페이지의 관련 부분은 다음과 같습니다.고정된성냥. 이는 정규식이 처음부터 끝까지 전체 문자열과 일치해야 함을 의미합니다. 그래서 당신은 .*
실제로 ^.*$
. 물론 매뉴얼 페이지는 그다지 명확하지 않지만, 기본적으로 일치하는 길이를 인쇄하는 것처럼 보입니다.
$ expr "abc" : '.*'
3
분명히 캡처 그룹을 사용하여 일치 항목 자체를 인쇄하도록 할 수 있습니다.
$ expr "abc" : '\(.*\)'
abc
$ expr "abc" : '.\(b.\)'
bc