expr을 사용하여 하위 문자열 추출

expr을 사용하여 하위 문자열 추출

문자열의 시작과 끝에서 하위 문자열을 추출하는 중입니다. ".*"를 사용하거나 사용하지 않고 시도해 보았습니다.

$expr "ab1cd1efgfedcbaAAAA" : ".*\(1[a-l]*\)"  # Result: 1efgfedcba

$expr "ab1cd1efgfedcbaAAAA" : "\(1[a-l]*\)"    # No Result (1cd was expected)

$expr "ab1cd1efgfedcbaAAAA" : "\(ab1[a-l]*\)"    # Result: ab1cd

"expr"이 두 번째 하위 문자열 검색에 대한 결과를 제공하지 않는 이유

볼 수 있듯이 세 번째 검색의 하위 문자열에는 "ab" 접두사가 추가되어 있습니다. 이것이 두 번째 검색과 세 번째 검색의 유일한 차이점입니다. 어쩌면 여기에 뭔가 빠졌을 수도 있습니다.

'expr'은 어떻게 검색을 수행합니까?

답변1

man expr이는 "STRING : PATTERN" 표현식이 "고정"되었으며 정보 페이지( info coreutils 'expr invocation')에서 다음을 볼 수 있음을 의미합니다.

`STRING : REGEX'
     Perform pattern matching.  The arguments are converted to strings
     and the second is considered to be a (basic, a la GNU `grep')
     regular expression, with a `^' implicitly prepended.  The first
     argument is then matched against this regular expression.

이는 보이는 효과가 예상된 동작임을 의미합니다.

관련 정보