2016-08-17 4 views
-2

저는 정규 표현식을 처음 접했고 문자 w 또는 ee77w10 등 2 자릿수로 구성된 단어가있는 문자열을 찾으려고합니다. .문자 사이에 공백 삽입

는 여기에 내가 (내가 틀렸다면 정정 해줘) 것을 발견 생각 나는 현재 가지고있는 정규식,

([e|w])\d{0,2}(\.\d{1,2})?

가 어떻게 바로 문자 e 또는 w 뒤에 공백을 추가 할 수있어? 기준이 충족되는 인스턴스가 없으면 문자열을 그대로 유지하고 싶습니다. re.sub를 사용해야합니까? 나는 그것에 대해 조금 읽었습니다.

입력 : hello e77 world

원하는 출력 :

hello e 77 world 당신을 감사드립니다.

+0

정규식을 테스트하지 않았습니까? 입력에서 실제로 'e77'을 찾지 않기 때문에. –

+0

여기에서 정규식 테스트를 시도하십시오. https://regex101.com/#python – mkaran

+0

@WayneWerner 생각하는 것 같군요, 그렇죠? http://regexr.com/3e1j5 그러나 모든 전자/전자와 일치하기 때문에 정확하지는 않습니다. – hl95

답변

5

귀하의 정규식은 다음과 같이해야합니다 :

만 특히 2 자리와 일치 할 경우
([ew])(\d{2}) 

, 또는 당신은 또한 e4

처럼 하나의 숫자와 일치 할 경우

([ew])(\d{1,2}) 

대괄호는 캡처 그룹이라고하며 검색 및 바꾸기 또는 파이썬으로 다시 참조 할 수 있습니다. re.sub

\1 \2 

는 그래서 같은 라인처럼 간단해야처럼 대체 문자열이 표시되어야합니다

re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string) 

편집 : 작업 코드는

>>> import re 
>>> your_string = 'hello e77 world' 
>>> 
>>> re.sub(r'([ew])(\d{1,2})', r'\1 \2', your_string) 
'hello e 77 world' 
1

이 무엇을 당신 '재사용 :

import re 

print(re.sub(r'([ew])(\d{1,2})', r'\g<1> \g<2>', 'hello e77 world')) 
관련 문제