는 :파이썬 정규 표현식의 불일치가 있습니까? 나는 다음과 같은 코드를 실행하면
수입
s = 'baaaad'
l = re.findall(r'((a)(?=a))', s)
print l
for elem in l:
print ''.join(elem)
재 I 출력 얻을 :
[('A', 'A'), ('A', '을은'), ('a', 'a')] aa aa aa
이는 예상대로입니다. 내가 lookbehind 예에 대한 대응 전략을 시도 할 때 :
s = 'baaaad'
l = re.findall(r'((?<=b)(a))', s)
print l
for elem in l:
print ''.join(elem)
를 내가 얻을 :
: 나는 얻기 위해 기다리고 있었다[('A', 'A')] AA
[('B', 'A')] 바 왜이 (나에게)
예기치 않은 동작? 내가 뭔가 잘못하고 있다면, 그게 뭐지? 그리고 그것을 고치는 방법?
감사합니다!
'((? <= (b)) (a))' – revo
알려주세요. 그래서 당신은 그 선견자에 대한 "올바른"대답조차도 다른 이유가 있다고 말하고 있습니까? – whirlaway
@whirlaway : 예. 눈에 보이는 결과가 정확히 정반대 인 버그가 두 개 있었으므로 원하는 출력을 생성했습니다. 당신이 일을 조금 바꿨을 때, 버그의 효과는 반대였습니다. – user2357112