0

Python を使用して、文字列内で文字列を複数回パターン マッチさせています。問題:

string = 'The value = 1 The value = 2 The value = 3'

値のみをgrepしたいのですが、出力は次のようになります。

['value = 1 value = 2 value = 3']

私はこのようにやっています:

pattern = re.compile('[value = (\d+)]*')
values = pattern.search(string)
values.group(0)

出力:

'' 

つまり、NULL (一致なし)

必要な出力をgrepするための正しい正規表現を教えてください。

4

3 に答える 3

1
>>> [' '.join(re.findall(r'value = \d+', string))]
['value = 1 value = 2 value = 3']
于 2012-11-29T11:29:25.297 に答える
1

文字クラスのグループ化を使用しています。で通常の​​グループ化を使用する必要があります(

import re

string = 'The value = 1 The value = 2 The value = 3'

pattern = re.compile(r'(value = \d+)')
pattern.findall(string)
# OUT: ['value = 1', 'value = 2', 'value = 3']
" ".join(pattern.findall(string))
# OUT: 'value = 1 value = 2 value = 3'
于 2012-11-29T11:29:48.043 に答える
0

RE ソースでの角括弧 ( []) の使用は非常に奇妙です。それらは文字セットを形成します。

次のようなものを使用する必要があります。

>>> pattern = re.compile(r'([^=]+)\s*=\s*(\d+)')
>>> pattern.findall(string)
[('The value ', '1'), (' The value ', '2'), (' The value ', '3')]

findall()を使用してすべての一致を取得し、グループ化して値の名前も取得することに注意してください。

于 2012-11-29T11:24:57.257 に答える