Python に正規表現一致オブジェクトがあります。一致したテキストを取得したい。パターンが'1.3'
で、検索文字列が の場合'abc123xyz'
、取得したいとします'123'
。どうやってやるの?
を使用できることはわかっていmatch.string[match.start():match.end()]
ますが、このような基本的なクエリでは非常に面倒です (場合によっては無駄です)。
もっと簡単な方法はありますか?
次のように、単純に match オブジェクトのgroup
関数を使用できます。
match = re.search(r"1.3", "abc123xyz")
if match:
doSomethingWith(match.group(0))
マッチ全体を取得します。編集: thg435 が指摘するように、を省略し0
て単に呼び出すこともできますmatch.group()
。
1
追記: パターンに括弧が含まれている場合、2
などを に渡すことで、これらのサブマッチを取得することもできますgroup()
。
その部分を取得できるようにするには、正規表現を「()」内に配置する必要があります
>>> var = 'abc123xyz'
>>> exp = re.compile(".*(1.3).*")
>>> exp.match(var)
<_sre.SRE_Match object at 0x691738>
>>> exp.match(var).groups()
('123',)
>>> exp.match(var).group(0)
'abc123xyz'
>>> exp.match(var).group(1)
'123'
そうでなければ、何も返されません:
>>> var = 'abc123xyz'
>>> exp = re.compile("1.3")
>>> print exp.match(var)
None