2

これが一致しない理由を誰か説明してもらえますか?

linesout = "test.host.com (10.200.100.10)"
pat = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.match(linesout)
if test:
        print "Acceptable ip address"
else:
        print "Unacceptable ip address"

ありがとうございました

4

2 に答える 2

3

searchの代わりに使用match

pat = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.search(linesout)

使用したい場合はmatch、正規表現を先頭に追加します.*

pat = re.compile(".*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
test = pat.match(linesout)

どちらの場合も出力:

Acceptable ip address

search() と match()のドキュメントからの引用

Python は、正規表現に基づく 2 つの異なるプリミティブ操作を提供します: re.match() は文字列の先頭でのみ一致をチェックしますが、re.search() は文字列内の任意の場所で一致をチェックします (これは Perl がデフォルトで行うことです) )。

于 2013-10-17T19:26:00.557 に答える