2017-09-10 7 views
-3

で正規表現を使用してIPアドレスに似た文字列(ドット)例えば分割私が見に分割します正規表現がしたいのPython

「を。」:私が持っているもの

Input: '1.2.3.4.5.6' 
Output : ['1', '2', '3', '4', '5', '6'] 

試してみました: -

>>> pattern = '(\d+)(\.(\d+))+' 
>>> test = '192.168.7.6' 
>>> re.findall(pat, test) 

私は何を得る: -

[('192', '.6', '6')] 
私は re.findall()から何を期待

: -

[('192', '168', '7', '6')] 

あなたは間違っているものを指しているに助けてくださいもらえますか?

私の思考 - pattern = '(\d+)(\.(\d+))+'で 、初期(\d+)192すなわち、最初の番号を見つけるその後(\.(\d+))+

.168.7すなわちフォーム'.<number>'の一つ以上の出現箇所を検索し、.6ます[EDIT:] これは単純化されています私が解決している問題のバージョン。 実際には、入力が

192.168 dot 7 {dot} 6 

をBE-ことができると期待される出力は依然として[('192', '168', '7', '6')]あります。

私はパターンのよう.168.7.6を抽出するためのソリューションを把握したら、私はその後、dot 168にパターンのような{dot} 7それを拡張することができます。

+4

待って、 'test.split( '。')'の何が間違っていたら、ドットで分割したいのですか?ハッピーハンマーでハエを叩かないでください。 –

+0

私はこれが来ると思いましたが、私の問題は私が求めているものとは異なります。基本的に、数字の代わりに複雑な文字列があります。の代わりに '。'実際には「ドット」すなわち192ドット168ドット7ドット6、これとその組み合わせなどがあります。 – user3903448

+3

その場合は、質問を更新して、役立つ実際のデータを投稿できますか?解決しようとしている問題とは異なる問題に対する解決策を私たちに提供することはあまり役に立ちません。 – birryree

答えて

0

あなたが唯一の正規表現\d+は、他のトークン/セパレータで区切られた数字を見つけることは十分なはずです、番号を見つける必要がありますので:

re.findall("\d+", test) 

これは、これらのいずれかの場合に動作するはずです:

>>> re.findall("\d+", "192.168.7.6") 
['192', '168', '7', '6'] 
>>> re.findall("\d+", "192.168 dot 7 {dot} 6 | 125 ; 1") 
['192', '168', '7', '6', '125', '1'] 
+1

コードのみの回答は、質問の問題の解決方法が説明されていないため、お勧めできません。あなたの答えを更新して、これが何をし、どのように問題を解決するのかを説明してください。 [よくある回答を書くにはどうすればいいですか]を確認してください(https://stackoverflow.com/help/how-to-answer) – FluffyKitten

+1

@FluffyKittenを入手しました。私は自分の答えを編集しました –

関連する問題