2013-06-28 4 views
1

정규식에별로 나쁘다. 왜 이것이 작동하지 않는지 알 수 없다. 단순히, 할당/방정식에서이 같은 두 개의 문자열을 일치시킬 :이 경우정규식을 통해 파이썬에서 일치하는 "..."= "..."

"string1" = "string2"

을, 나는 인용 부호없이 "문자열 1"과 "문자열 2"일치하기를 (기대). 내가 파이썬에서 나는 웹에서 발견 정규식 테스터 작동 다음 정규식을 시도하지만,하지 :

("[^"]*").=.("[^"]*")

파이썬에서 그것은 다음과 같이 보일 것이다 :

matches = re.findall(r'("[^"]*").=.("[^"]*")', line)

그러나 내가 말했듯이, 그것은 효과가 없습니다. 당신이 그 (것)들을 당신의 일치의 일부가 될하지 않으려면

+0

'print repr (line)'은 무엇을 인쇄합니까? –

+0

각 문자 사이에 \ x00이 섞인 선. 어떤 종류의 인코딩 문제입니까? – bompf

답변

4
는 캡처 그룹 외부 인용 부호를 이동

:

>>> matches = re.findall(r'"([^"]*)".=."([^"]*)"', line) 
>>> matches 
[('string1', 'string2')] 

또한 주위에 당신이 공간을 가지고 있기 때문에, 당신의 "=", 당신은 일치해야합니다 우주. 점 "." 모든 문자와 일치합니다.

+0

이상하게도이 기능은 대화 형 CLI에서 잘 작동하지만 스크립트와 함께 사용하고 싶지는 않습니다. fileinput.input (...)을 통해 줄을 읽었습니다. 나는 개행 문자 '\ n'과 매치를 시도했지만 효과가 없었다. – bompf

+0

당신의 대답은 정확 합니다만, UTF-16이었던 파일을 읽었을 때의 인코딩 문제가있었습니다. openhook = fileinput.hook_encoded ("utf-16")'을 fileinput.input (..)에 건네 주어야만했습니다. – bompf