"<name>(<number>)"
의 문자열을 구문 분석 할 수있는 파이썬 정규 표현식을 작성하려고합니다. 여기에서 <number>
은 선택 사항입니다.파이썬의 정규 표현식을 사용하여 문자열의 끝에 선택적 숫자를 추출합니다.
예를 들어 'sclkout'
을 전달하면 끝에 숫자가 없으므로 단지 'sclkout'
과 일치해야합니다. 입력이 'line7'
인 경우 'line'
및 '7'
과 일치해야합니다. 이름에는 그 안에 숫자도 포함될 수 있으므로 'dx3f'
을 입력하면 'dx3f'
이되어야하지만 'dx3b0'
의 경우 'dx3b'
과 0
과 일치해야합니다.
이
내가 먼저 시도 무엇 :import re
def do_match(signal):
match = re.match('(\w+)(\d+)?', signal)
assert match
print "Input = " + signal
print "group1 = " + match.group(1)
if match.lastindex == 2:
print "group2 = " + match.group(2)
print ""
# should match 'sclkout'
do_match("sclkout")
# should match 'line' and '7'
do_match("line7")
# should match 'dx4f'
do_match("dx4f")
# should match 'dx3b' and '0'
do_match("dx3b0")
이 물론 때문에 (\w+)
그룹의 욕심 일치의 잘못이다, 그래서 나는 비 욕심에 그 설정을 시도 :
match = re.match('(\w+?)(\d+)?', signal)
이를 그러나 문자열의 첫 문자에만 일치합니다.
이것은'(\ w +?) (\ d +)? $'와 같이 문자열 시작 부분을 신경 쓰지 않고 작동합니다. 감사! –