2
import os,re
def test():
    list  = re.findall(r'(255\.){2}','255.255.252.255.255.12')
    print list
if __name__ == '__main__':
test()

出力:「['255。'、'255。']」</p>

どうして【255.255,255.255】?</ p>

mactchオブジェクトは「255.255」である必要があります

どうすれば正しい出力結果を得ることができますか?

4

2 に答える 2

2

正規表現では、最初のをキャプチャしているだけです255.。キャプチャするすべてのものをキャプチャグループにラップする必要があります。

>>> re.findall(r'((?:255\.){2})','255.255.252.255.255.12')
['255.255.', '255.255.']

(?:...)非キャプチャグループです。基本的に、キャプチャされたグループとして表示されることなく、物事をグループ化できます。

于 2012-12-08T03:12:05.587 に答える
1

うーん、そうではない。まず、非キャプチャグループが必要になります。そこにあるキャプチャグループは「255」のみをキャプチャし、それをの出力として使用しますre.findall

例:

re.findall(r'(?:255\.){2}', '255.255.252.255.255.12')

(?:)構造は非キャプチャグループであり、キャプチャグループがない場合、re.findallは一致する文字列全体を返します。

これは実際には返されません['255.255', '255.255']-実際には返され['255.255.', '255.255.']ます。

于 2012-12-08T03:14:55.737 に答える