2017-05-09 17 views
0

現在、数字とピリオドのみを含む文字列の部分を探しています。正規表現(数字とピリオド)

ので、文字列はこのように見えることができます:

123.12:

X54 123.12.3.7347.12.1 Somethingsomething I123.5duh

私だけ含む2番目の文字列をしたいです.3.7347.12.1

Fまたは私は正規表現していること:だから、基本的には、文字列は、次のピリオドで番号で始まるように

r"([0-9]+\.)+[0-9]+" 

を持っており、このペアは番号で終わるながら、少なくとも一回発生することがあります。

しかし、私はこの

re.findall(regex, "5.1.388.4.1.2.9 blabla") 

を行うときには、ここでしか起こっている何['2.']

を見つけましたか?

+1

あなたは何とか最初のキャプチャグループだけを取得していますが、マッチ全体ではありません。かっこのかっこではなく、 '(?:' ... ')'を使って非捕捉グループを作ります。 – jasonharper

+0

わかりません...あなたが望むすべての部分文字列と一致し、 '2'をキャプチャする必要があります。部。結局のところ何も捕まえたくないと思います。 '(?:[0-9] + \。)+ [0-9] +'(編集:Arf、数秒遅れて^^) – Gawil

+0

'検索を使用する'' findall'ではなく '' findall''です。 –

答えて

0

私は今これをr "\ b((\ d +。)+(\ d)+)\ b"で試してみました。

私はまだ、どのように私は本当にあなたが精緻化することができればそれを感謝するだろうか分からない。

+0

これは、3つのグループ( '()'をキャプチャしているためです) regexのグループをキャプチャする):[5.1.388.4.1.2.9]、[2.]、[9]、あなたのコードは最初に取得したグループのみを返します。 – Gawil

+0

これは何度も詳述されています。この質問は、ほぼ一日おきに聞かれます。 –

関連する問題