请帮助解决我的正则表达式问题
这是我的字符串
source="http://www.amazon.com/ref=s9_hps_bw_g200_t2?pf_rd_m=ATVPDKIKX0DER&pf_rd_i=3421"
source_resource="pf_rd_m=ATVPDKIKX0DER"
source_resource
中的source
可能会以&
或.
[例如]结尾。
到目前为止,
regex = re.compile("pf_rd_m=ATVPDKIKX0DER+[&.]")
regex.findall(source)
[u'pf_rd_m=ATVPDKIKX0DER&']
我在这里使用过这个文字。而是使用文本,我如何使用source_resource
变量与&
或.
来查找此内容。
答案 0 :(得分:3)
如果目标是提取pf_rd_m
值(显然就像使用regex.findall
那样),那么我不确定正则表达式是最简单的解决方案这里:
>>> import urlparse
>>> qs = urlparse.urlparse(source).query
>>> urlparse.parse_qs(qs)
{'pf_rd_m': ['ATVPDKIKX0DER'], 'pf_rd_i': ['3421']}
>>> urlparse.parse_qs(qs)['pf_rd_m']
['ATVPDKIKX0DER']
答案 1 :(得分:2)
您还必须逃避.
pattern=re.compile(source_resource + '[&\.]')
答案 2 :(得分:1)
您可以使用Python中提供的所有字符串格式选项,像普通字符串一样构建正则表达式的字符串:
import re
source_and="http://rads.stackoverflow.com/amzn/click/B0030DI8NA/pf_rd_m=ATVPDKIKX0DER&"
source_dot="http://rads.stackoverflow.com/amzn/click/B0030DI8NA/pf_rd_m=ATVPDKIKX0DER."
source_resource="pf_rd_m=ATVPDKIKX0DER"
regex_string = source_resource + "[&\.]"
regex = re.compile(regex_string)
print regex.findall(source_and)
print regex.findall(source_dot)
>>> ['pf_rd_m=ATVPDKIKX0DER&']
['pf_rd_m=ATVPDKIKX0DER.']
我希望这就是你的意思。
请注意我修改了你的正则表达式:.
是一个特殊符号,需要进行转义,就像+
一样(我只假设字符串只会出现一次,这使得使用+不必要的。)