2016-08-21 2 views
-3

数字で始まるすべての行を抽出する正規表現とは何ですか?数字で始まるすべての行を見つける

私は^文字が行の先頭にあるものと一致するのに使用されていることを知っていますが、正しく構成していません。ここで

は、私が試したものです:私は推測している

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

ので、何が起こっているかを参照してください?あなたの入力は何ですか?あなたの出力は何ですか?問題を解決するために何をやろうとしましたか? – UnholySheep

+3

'MULTILINE'修飾子と'。* 'は忘れてしまいます。しかし、それは最善の方法ではありません。 '\ n'で分割し、最初のcharが数字であるかどうかを調べる行を繰り返します。 http://ideone.com/dO4AYB –

+0

^^ Yupを参照してください。それはまさに私がやることです。 – 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

申し訳ありませんが、私は子供たちをベッドに置いています....固定されています。 –

関連する問題