expr 유틸리티의 정규식 일치 기능에 대해 알아봅니다.

expr 유틸리티의 정규식 일치 기능에 대해 알아봅니다.

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

관련 정보