2014-07-13 12 views
3

나는 하이픈 사이의 숫자와 일치하는 정규 표현식을 조합하려고합니다.정규식 - 하이픈 사이의 일치하는 숫자

일반

a-b-c-d-e, where a,b,c,d,e can each be either one, two or three digit numbers. 

예를

9-b-90-2-2  

19-b-390-2-2 

가 어떻게 각 표현식에서 b를 수를 선택할 수 있습니다 ?

답변

3

에만 번호 (B)를 얻기 위해 아래 정규식을 사용할 수,

^[^-]*-([^-]*).* 

DEMO

>>> str = "9-b-90-2-2 " 
>>> m = re.findall(r'^[^-]*-([^-]*).*', str) 
>>> m 
['b'] 

없이 그것을 할 수 있습니다 또는 여러 줄을 입력 한 다음 줄 바꿈 문자를 사용하도록 설정해야합니다 (

).
>>> str = """9-45-90-2-2 
... 9-45-90-2-2-89-878""" 
>>> m = re.findall(r'^[^-]*-([^-]*).*', str, re.MULTILINE) 
>>> m 
['45', '45'] 
0

당신은 정말이에 대한 정규식이 필요하지 않지만, 정규식은 간단하다 :

(?<=-)(\d+) 

Demo at Regex101

기본적으로, 이것은 단지 첫 하이픈 다음 숫자를 일치합니다. 입력이 하나 포함되어있는 경우

8

당신은 정규식

num = "9-b-90-2-2" 
print num.split('-')[1] # b 
관련 문제