정규식 '(\ba\b) \B\1\B' 정보

정규식 '(\ba\b) \B\1\B' 정보

후속작입니다이것질문. 나는 그것이 새로운 질문을 정당화할 만큼 충분히 다르다고 생각합니다.

내가 이해한 바에 따르면 캡처 그룹은 텍스트만 캡처합니다. 즉, (\ba\b)일치하는 문자열만 저장할 때 a단어 경계 자체는 텍스트가 아니기 때문에 포함되지 않습니다.

이로 인해 패턴이 (\ba\b) \B\1\B일치할 수 있어야 한다고 믿게 되지만 a zaz(두 번째 발생은 a결국 단어가 아닌 두 경계 사이에서 발생합니다), 그렇지 않습니다.

내가 무엇을 놓치고 있나요?

답변1

z를 놓쳤나요?

$ echo a zaz | grep -P '(\ba\b) \B\1\B'
- no output -
$ echo a zaz | grep -P '(\ba\b) z\B\1\Bz'
a zaz

\b괄호에 추가 문자가 포함되지 않는 것처럼 \B추가 문자도 일치하지 않습니다. 따라서 정규식에는 a 주변의 z와 일치하는 항목이 없습니다.

관련 정보