我尝试实现以下代码,但它打印出来的不是我期望的
import re
def regex_search(txt):
lst = re.findall(r'(d{1,3}.){3}', txt)
return lst
print(regex_search("123.45.67.89"))
当我期望['123.','45.","67.]时,它会打印出['67.]。我错在哪里?请帮忙。
提前谢谢。
这里甚至不需要使用正则表达式:
input = "123.45.67.89"
parts = input.split(".")
parts = [s + "." for s in parts]
parts = parts[:-1]
print(parts)
['123.', '45.', '67.']
你应该删除量词{3}
,也去掉额外的分组并编写这段代码,
import re
def regex_search(txt):
lst = re.findall(r'd{1,3}.', txt)
return lst
print(regex_search("123.45.67.89"))
打印您的预期输出,
['123.', '45.', '67.']
此外,当您使用此(d{1,3}.){3}
时,它将重复三次匹配该d{1,3}.
中的三个,这将123.45.67.
为整个匹配项,但 group1 将仅捕获在您的情况下67.
的最后一个匹配项,因此仅在列表中打印该值。
我稍微更改了您的正则表达式,现在它应该可以工作了。
import re
def regex_search(txt):
lst = re.findall(r'(d{1,3}.)', txt)
return lst
print(regex_search("123.45.67.89"))
输出现在将是。
['123.', '45.', '67.']
您也可以在没有正则表达式的情况下执行此操作,在.
上拆分并忽略最后一个元素
import re
def regex_search(txt):
items = txt.split('.')[:-1]
return [item+'.' for item in items]
print(regex_search("123.45.67.89"))
输出将是
['123.', '45.', '67.']