정규 표현식을 사용하여 문자열에서 하위 문자열을 추출하려고합니다. 아래 Python
(제공 원하는 결과)의 작업 코드Perl과 Python에 비해 TCL에서 다르게 동작하는 정규식 패턴
파이썬 솔루션입니다
x = r'CAR_2_ABC_547_d'
>>> spattern = re.compile("CAR_.*?_(.*)")
>>> spattern.search(x).group(1)
'ABC_547_d'
>>>
펄 솔루션
$ echo "CAR_2_ABC_547_d" | perl -pe's/CAR_.*?_(.*)/$1/'
ABC_547_d
TCL 솔루션
그러나, I 너를 해봐. Tcl
에서이 접근 방식을 기울이면 다른 결과가 나옵니다. 누군가가이 동작
% regexp -inline "CAR_.*?_(.*)" "CAR_2_ABC_547_d"
CAR_2_ {}
내 요구 사항은 하위를 추출하는 것입니다 문자열 "ABC_547_d". 나는 의도적으로 '?'를 사용하여 욕심이 없도록했습니다. TCL이 아닌 파이썬에서 왜 작동하는지 이해하고 싶습니다. – sarbjit
이것은'Tcl'과 관련됩니다. 첫 번째 한정 기호는 욕심이 없기 때문에'. *'는 빈 문자열에만 매치합니다. '. +'를 사용했다면, 그것은 당신에게 문자 'A'만을 줄 것입니다. – Dinesh
Tcl regex with grouping method를 사용하여 원하는 결과를 얻는 방법을 제안 할 수 있습니까? Perl과 Python에서 작동하는 원래 정규식을 볼 수 있습니다. TCL은 regex를 다르게 처리합니까? – sarbjit