문자열의 시작과 끝에서 하위 문자열을 추출하는 중입니다. ".*"를 사용하거나 사용하지 않고 시도해 보았습니다.
$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.
이는 보이는 효과가 예상된 동작임을 의미합니다.