6
re.findall("(100|[0-9][0-9]|[0-9])%", "89%")

これは結果のみ[89]を返し、89% 全体を返す必要があります。それを行う方法はありますか?

4

3 に答える 3

11
>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%")
['89%']

キャプチャ グループがある場合はfindall、キャプチャされた部分のみを返します。?:かっこがキャプチャ グループにならないようにするために使用します。

于 2013-04-16T19:43:21.897 に答える
6

些細な解決策:

>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%")
['89%']

より美しいソリューション:

>>> re.findall("(100%|[0-9]{1,2}%)","89%")
['89%']

最も美しい解決策:

>>> re.findall("(?:100|[0-9]{1,2})%","89%")
['89%']
于 2013-04-16T19:42:24.283 に答える
2

外側のグループを使用し、内側のグループを非キャプチャ グループにします。

>>> re.findall("((?:100|[0-9][0-9]|[0-9])%)","89%")
['89%']
于 2013-04-16T19:43:26.133 に答える