2016-08-03 2 views
3

첫째로 우리 다음 문자열이 있습니다정규식은 문자열 만 첫 번째 문자를 배제하지 않는다 제외

aaa{ignoreme}asdebla bla f{}asdfdsaignoreme}asd 

우리는 공백 및 {} 같은 특별한 charsacters을 찾기 위해 우리의 정규식을 원하지만, 만약 이후 { 후 정확히 ignoreme}을 온다 지금 우리가있는 곳입니다 그것을

을 제외 :

(?!{ignoreme})[\s\[\]{}()<>\\'"|^`] 

문제는 우리의 정규식 지느러미가 DS } ignoreme 여기

링크 https://regex101.com/r/bU1oG0/2

어떤 도움이 감사

을 감사에게 후

답변

3

요점은 당신의 (?!{ignoreme}) 내다보기 만 {ignoreme}과 일치 뒤를 건너 뛰고 이후 }이 일치한다는 것입니다 }{ignoreme} char 시퀀스가 ​​시작되지 않았기 때문에 }입니다. 또한 JS에서는 (?<!{ignoreme)}처럼 lookbehind를 사용할 수 없습니다.

/{ignoreme}|([\s[\]{}()<>\\'"|^`])/g 

이제 regex demo

를 참조하십시오

필요하지 않은 것과 일치하고, 일치와 는 당신이 필요를 캡처하는 정규식으로 처리 할 수있는 문제의 종류 , {ignoreme}이 일치하므로 (이 값을 사용할 필요가 없음) ([\s[]{}()<>\\'"|^`])은 사용해야하는 값인 그룹 1에 캡처됩니다.

+2

"나는 필요합니다 ..."코멘트를 기다리고 있습니다. –

+0

아니요 "하지만 필요한 것은 ..."문제에 대한 잘못된 접근 방식을 가졌기 때문에 의견을 말합니다. 나는 negated lookahead (?!)로 그것을 만들고 싶었다. 이것은 훨씬 쉬운 방법입니다. –

+0

예, 요점은 당신이 실제로 lookbehind가 필요하지만 JS regex 엔진은이 구조를 지원하지 않습니다. : ( –

관련 문제