0

次のように宣言された文字列があります。

String testString = "1: 2, 3\n2: 3, 4\n3: 1\n4: 2\n5: 6, 7, 8"

インデックスを返す正規表現、つまり次のリスト (または任意のコレクション) を返す正規表現を書きたいと思います。

[1,2,3,4,5]

正規表現を次のように書くかどうかはわかっています。

regex = r'[0-9]:'

私は手に入れます:

[1:,2:,3:,4:,5:]

ただし、これは目的の出力ではありません。正規表現を使い始めたばかりで、(これまでに) 知っているすべてをこの問題に適用しましたが、有効な正規表現を書くことができません。助けていただければ幸いです、ありがとう。

4

3 に答える 3

3

r'[0-9]+(?=:)'先読みを使用する を使用できます

于 2013-10-04T18:40:41.190 に答える
1

正規表現を使用してから、リスト内包表記を使用して末尾のコロンを削除できます。

>>> [a.strip(':') for a in re.findall(r"[0-9]:", testString)]
['1', '2', '3', '4', '5']
于 2013-10-04T18:42:07.880 に答える
1
regx = re.compile('(?<!\d)\d+(?=\s*:)')
于 2013-10-04T18:41:58.220 に答える