1. ホーム
  2. python

[解決済み] 正規表現に最初にマッチした文字列を返します。

2022-08-29 20:54:50

質問

正規表現の最初のマッチを取得したい。

今回は、リストがあります。

text = 'aa33bbb44'
re.findall('\d+',text)

['33', '44']

リストの最初の要素を抽出できた。

text = 'aa33bbb44'
re.findall('\d+',text)[0]

'33'

しかし、それは少なくとも1つのマッチがある場合にのみ動作し、そうでない場合はエラーが発生します。

text = 'aazzzbbb'
re.findall('\d+',text)[0]

IndexError: リストインデックスが範囲外です。

その場合、関数を定義すればいいのですが

def return_first_match(text):
    try:
        result = re.findall('\d+',text)[0]
    except Exception, IndexError:
        result = ''
    return result

新しい関数を定義することなく、その結果を得る方法はありますか?

どのように解決するのですか?

を埋め込むことができます。 '' を正規表現に埋め込むことができます。 |$ :

>>> re.findall('\d+|$', 'aa33bbb44')[0]
'33'
>>> re.findall('\d+|$', 'aazzzbbb')[0]
''
>>> re.findall('\d+|$', '')[0]
''

また re.search も動作します。

>>> re.search('\d+|$', 'aa33bbb44').group()
'33'
>>> re.search('\d+|$', 'aazzzbbb').group()
''
>>> re.search('\d+|$', '').group()
''