2014-12-27 3 views
2

실제로 작동하지 않습니다.정규식 부정적인 lookbehind 최대 길이 "

나는 모두 따옴표는 백 슬래시 \ 앞에 할 수없는 작은 따옴표 '으로 둘러싸인 하나 개의 문자와 문자열과 일치하는 정규식을 사용하려합니다. 그것은 따옴표 앞에 백 슬래시되지 않도록 부정적인 lookbehind를 사용

(?<!\\)'(.{1})(?<!\\)'

:

내 정규식입니다.

지금까지, 그것은 잘 작동하지만, 나는 어떤 문제로 실행했습니다 : 그것은 'H' 일치

'H'ello world!에서, 그리고 'H'\ 앞에 있기 때문에 \'H'ello world에서이 경기 'H'를 doen't.

내가으로 실행하면 문제는 내가이 문자열이있는 경우 :

'I' have \'r'eally bad 'e'xamples

\ 앞에되지 않기 때문에이 \ 앞에 있기 때문에, 그것은 \'r' 일치하지 않습니다이 'I' 일치합니다 하지만 하지 않습니다 경기 'e'\ 앞에 직접이 아니라 그 전에 \의 발생이 (전에이 있기 때문에).

내 질문은 부정적인 lookbehind가 \을 찾아야하는 "최대 거리"를 지정하는 방법이 있습니까?

미리 감사드립니다.

+2

: 전자를 'e'' 여기 https://regex101.com/r/pS6uT3/1 – Barmar

+0

은'하지만이 일치하지 않습니다' ' 왜냐하면 그것은 \가 바로 앞에 오지 않기 때문에 그 앞에 \가 나오고 ('r'앞에)'나를 불분명하게한다. –

+0

네거티브 lookbehind 후 정량화 된 RE가 없으면 바로 뒤에서 만 보입니다. 거리가 없습니다. – Barmar

답변

1

첫째, 뒤에서 보이는 모양은 가변 길이가 아닙니다. 단 하나의 문자 만 있기 때문에 길이는 정확히 1입니다.

둘째로, 하나만이면됩니다. 점이 백 슬래시와 일치하지 않으면 두 번째 것은 필요하지 않습니다.

귀하의 정규식을 단순화 할 수 있습니다

그것은`일치
(?<!\\)'[^\\]' 
+0

감사합니다. 나는 뒤에있는 모습이 캐릭터 바로 뒤에있는 것이 아니라 전체 문자열에서 뒤에 있다고 생각했습니다. – squill25

관련 문제