(참고 : Why can't you use repetition quantifiers in zero-width look behind assertions이 아니 중복, 게시물의 끝을 참조하십시오.)부정적인 lookbehind
을 나는 그것이 선행되지 않을 때 B를, 일치하는 grep -P
(펄) 정규식을 작성하려고 해요 A - 사이에 공백이 있는지 여부에 관계없이. "AB"일치하는 결과 않습니다이 일치하지 않는 "AB"를 원인
(?<!A)\s*B
, 좋은,하지만 :
그래서,이 부정적인 lookbehind을 시도하고, regex101.com에서 테스트 , 그것은 내가 원하는 것이 아닙니다.
이유가 정확히 무엇인지 모르겠습니다. \ s *가 빈 문자열 ""과 일치한다는 것과 관련이 있습니다. A와 B 사이의 \ s *가 무한대로 일치한다고 말할 수 있습니다. 그러나 왜 이것이 "AB"에 영향을 미치지 만 "AB"가 아닌가요?
다음 정규식이 적절한 해결책입니까? 그렇다면 왜 문제가 정확히 해결됩니까?
(?<![A\s])\s*B
이전에 게시했는데 중복 질문으로 잘못 표시되었습니다. 내가 찾고있는 가변 길이는 일치의 일부이며 부정적인 lookbehind 자체의 일부가 아닙니다. 그래서 이것은 다른 질문과 상당히 다릅니다. 예, 네거티브 lookbehind 안에 \ s *를 넣을 수는 있지만 아직 완료하지 않았습니다. 다른 질문에 설명 된대로 지원하지 않습니다. 또한, 나는 특히 작동에 대해 알고 있기 때문에이 위의 대체 정규 표현식에 대해 왜 에 관심이 있는지 정확히 모르겠다. 다른 질문은 그 대답에 도움이되지 못했습니다.
또한/[^ A \ s] \ s * B /' –
을 사용할 수도 있습니다. 좋은 점 . 내 실제 사용 사례에서 A와 B는 단순한 문자가 아닌 두 단어입니다. – wdep1
'(? sln