2016-08-21 2 views
-3

숫자로 시작하는 모든 라인을 추출하는 정규식이란 무엇입니까?숫자로 시작하는 모든 라인 찾기

나는 ^ 문자가 줄의 시작 부분에 어떤 문자와도 일치하는 데 사용된다는 것을 알고 있지만 올바르게 구성하지 못했습니다. 여기

내가 시도 것입니다 : 내가 추측하고있어

re.findall('^[0-9]+',mystring). 
+3

그래서 무슨 일이 일어나고 있는지를 참조하십시오? 당신의 입력은 무엇이며 출력은 무엇입니까? 문제를 해결하기 위해 무엇을 시도 했습니까? – UnholySheep

+3

'MULTILINE' 한정자와'. *'는 나머지 줄과 일치하지 않습니다. 그러나, 그것은 최선의 방법이 아닙니다. '\ n'로 분할 해 최초의 char가 숫자인지를 검사합니다. http://ideone.com/dO4AYB –

+0

^^ 예. 그게 내가하는 일이야. – idjaw

답변

2

는 전체 라인을 일치시킬하지만 그것은 단지 시작 번호와 일치한다. 욕심이 많은 와일드 카드와 multiline 인수를 포함시켜 여러 행을 검색하려고한다고 알려야합니다. 보십시오 : 당신은 라인의 나머지 부분과 일치하는 [0-9]re.MULTILINE 수정 및 .*을 잊지

re.findall('^[0-9].*', mystring, re.MULTILINE) 
+0

'[0-9]'다음에'+'를 사용할 필요가 없습니다. 그것 없이도 작동합니다. –

+0

정확합니다. 방금 질문의 코드를 복사하고 수정 사항을 너무 자세히 살펴 보지 않았습니다. – gowrath

3

. 이고 정규식을 사용하는 경우 r"(?m)^[0-9].*"을 사용합니다. 그러나, 그것은 최선의 방법이 아닙니다. \ n을 사용하여 분할하고 첫 번째 문자가 숫자인지 확인하는 과정을 반복합니다. 여기

내가 제안 무엇 :

with open('file', 'r') as f: 
    for line in f: 
     if len(line) > 0 and line[0].isdigit(): 
      print(line) 

this Python demo

+2

len (line)> 0이고 line [0] .isdigit()이면? 귀하의 솔루션은 인덱스를 범위 밖으로 벗어나게합니다. –

+0

@PrashantBhanarkar 예,'line [0]'이 아닌'len (line)> 0'이어야합니다. –

+0

죄송합니다. 아이들을 잠자리에 들게 .... 고정되었습니다. –

관련 문제