7

Python に正規表現一致オブジェクトがあります。一致したテキストを取得したい。パターンが'1.3'で、検索文字列が の場合'abc123xyz'、取得したいとします'123'。どうやってやるの?

を使用できることはわかっていmatch.string[match.start():match.end()]ますが、このような基本的なクエリでは非常に面倒です (場合によっては無駄です)。

もっと簡単な方法はありますか?

4

2 に答える 2

7

次のように、単純に match オブジェクトのgroup関数を使用できます。

match = re.search(r"1.3", "abc123xyz")
if match:
    doSomethingWith(match.group(0))

マッチ全体を取得します。編集: thg435 が指摘するように、を省略し0て単に呼び出すこともできますmatch.group()

1追記: パターンに括弧が含まれている場合、2などを に渡すことで、これらのサブマッチを取得することもできますgroup()

于 2013-04-25T14:48:31.060 に答える
-1

その部分を取得できるようにするには、正規表現を「()」内に配置する必要があります

>>> 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
于 2013-04-25T14:58:13.503 に答える