-1

以下の文字列では、正規表現は両方の条件に一致します。

aa="192.168.251.135,henry,thesecond,0"
aa1="192.168.254.35,henry,0"
#The below regular expression would satisfy bot aa and aa1
re.findall(r"(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b),((?:\w+,\w+|\w+)),(\d+)",aa)

私の質問は、文字列ab="192.168.251.135,henry,thesecond,"の最後に整数が存在しない場合、上記のre.findall()を拡張することにより、出力に1を追加することは可能ですか?

4

2 に答える 2

0

あなたの質問は紛らわしいです。私の理解が正しければ、文字列が数字で終わっていなくても、文字列を一致させたいと思います。つまり、最後の数字の一致の繰り返しが1回以上ではなく、0回以上になるように、正規表現を変更する必要があるということです。

>>> re.findall(r"(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b),((?:\w+,\w+|\w+)),(\d*)",ab)
[('192.168.251.135', 'henry,thesecond', '')]
>>> 

興味深いことに、正規表現なしでこれを簡単に行うことができます

>>> if not ab.rpartition(",")[-1].isdigit():
    ab+='1'
于 2012-04-13T10:56:29.733 に答える
0

を使用しstr.isdigit()ます。

if not aa[-1].isdigit():
    aa += '1'
于 2012-04-13T10:57:54.793 に答える