pqr
을 정규식을 사용하여 문자열에서 제외하고 싶습니다. 내가 현재 가지고있는정규식 제외 어법을 사용하여 정확한 문자열 제외
이 올바르게 abc/pqr/xyz
거부
abc\/(?!.*pqr).*\/xyz
이지만, 그것은 또한 내가 일치시킬 abc/pqrst/xyz
을 거부합니다.
완전한 단어 인 경우 pqr
만 제외하고 pqrst
과 같이 긴 단어의 하위 문자열 인 경우는 제외합니다.
pqr
을 정규식을 사용하여 문자열에서 제외하고 싶습니다. 내가 현재 가지고있는정규식 제외 어법을 사용하여 정확한 문자열 제외
이 올바르게 abc/pqr/xyz
거부
abc\/(?!.*pqr).*\/xyz
이지만, 그것은 또한 내가 일치시킬 abc/pqrst/xyz
을 거부합니다.
완전한 단어 인 경우 pqr
만 제외하고 pqrst
과 같이 긴 단어의 하위 문자열 인 경우는 제외합니다.
당신은 word boundaries 룩어 내부입니다 pqr
로 사용할 수 있습니다 :
abc\/(?!.*\bpqr\b).*\/xyz
^^ ^^
가 regex demo를 참조하십시오. 단어 경계를 사용하지 않으면 pqr
으로 인해 정규 표현식이 끊어지며 단어 경계를 추가 할 때 일치하지 않는 단어 만 pqr
이 전체 단어로 표시됩니다.
대안은 특정 상황에서 pqr
과 일치하는 것입니다
abc\/(?!(?:.*\/)?pqr\/).*\/xyz
이 another demo를 참조하십시오. 여기에서 (?!(?:.*\/)?pqr\/)
은 abc/
이후 또는 abc
이후 0+ 임의의 문자가 마지막으로 /
까지 이어지며 다른 문자가 /
인 경우에만 일치합니다. 다른 모든 상황에서는 일치하는 것입니다.
참고 :이 전체 단어 xyz
일치하도록 한 후 같은 방법은 xyz
에 적용되어야한다 (당신은 \b
를 추가 할 수 있습니다
NOTE2이 :. abc\/(?!(?:(?!\/xyz).)*\bpqr\b).*\/xyz
를 사용 xyz
전에 표시 pqr
을 요구하려면
을 수행합니다. 또한
abc\/(?!.*pqr\/).*\/xyz
: 간단한 검사는 당신이 그 시점에서 pqr/
이없는 것을 볼 수있을 것이다 (?!.*
에 .*
을 입력하면 abc/defpqr/xyz
을 허용하지 않습니다. 그게 니가 원하는거야?
전체 단어'pqr'? 주변에'\ b'를 추가하십시오. 'abc \/(?!. * \ bpqr \ b). * \/xyz'. https://regex101.com/r/HjJBBH/1 –
감사 Wiktor를 참조하십시오. 그것의 지금 일하는 :) –
[Regex - 단일 단어를 제외하는 방법?] 가능한 복제본 (http://stackoverflow.com/questions/7820930/regex-how-to-exclude-single-word) – revo