문자열과 함께 expr 사용하기

문자열과 함께 expr 사용하기

y=$(expr "$str" : ".*$x" - length "$x") 누구든지 이 코드를 설명해 주실 수 있나요? 저는 스크립팅을 처음 접했고 C++ 및 Python에 대한 경험이 있습니다. 사실 이 질문은 이전 질문에 대한 내 의견의 일부였지만 답변을 얻지 못했습니다.

답변1

표현식 expr"$str" : ".*$x"정규식 일치입니다. 일반적인 형태는

expr STRING : REGEXP

는 어디에 REGEXP있나요?고정된 정규식REGEX- "고정" 은 의 첫 번째 문자부터 일치를 시도한다는 의미 이므로 내부 어디에서나 STRING일치하려면 앵커부터 시작까지 모든 문자를 후루룩 마시는 것과 같은 것이 필요합니다.$x$str.*$x

결과는 일치된 패턴의 길이입니다. 여기에는 와 일치하는 모든 항목 .*과 와 일치하는 모든 항목이 포함됩니다 $x. 그래서

expr  "$str" : ".*$x" - length "$x"

$xin 일치 항목의 시작 인덱스를 반환 하거나, 일치 항목이 없으면 $str길이를 뺀 값을 반환합니다. $x예를 들면 다음과 같습니다.

$ expr foobarbaz : ".*bar" - length bar
3

$ expr foobar : ".*baz" - length baz
-3

"문자열과 함께 사용"할 수도 있지만 실제로는 (GNU 기본) 정규식으로 expr해석되므로 영숫자 문자 이외의 문자가 포함되어 있으면 주의하십시오.$x

관련 정보