我有一个网址列表,这些网址在&
符号后最后有不同的数字。我无法应用正则表达式从网址中删除这些数字(包括&
),因为有多个&在字符串中,re.sub('&\d*',"",x)
命令会过滤所有&
,包括我要删除的内容。
网址为:http://helloworld.com?p1=123&p2=987&hello=world&123456
我想要的输出是:http://helloworld.com?p1=123&p2=987&hello=world
答案 0 :(得分:3)
如果您总是想要最后一个参数,则可以使用锚定模式:
re.sub(r'&\d+$',"",x)
重要的一块是美元符号,表示最后只匹配。
另外,您应该记住,每当您使用*
时,可以匹配空字符串。如果要匹配非空字符串,则需要使用+
。
答案 1 :(得分:2)
+
之后您需要\d
才能进行匹配!使用&\d*
时,它首先匹配中间&
。此外,您需要$
来指定您的模式位于字符串的末尾:
'http:\\helloworld.com?p1=123&p2=987&hello=world&123456'
^
所以请使用re.sub(r'(&\d+)$',"",x)
而不是你的!请参阅DEMO。