-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

你的问题令人困惑。如果我的理解是正确的,即使字符串不以数字结尾,您也想匹配字符串。这只是意味着您需要更改正则表达式,以便最后一个数字匹配的重复次数为 0 次或更多次,而不是 1 次或更多次

>>> 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 回答