variab上的python正则表达式

2024-04-19 16:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

请帮我解决正则表达式的问题

这是我的绳子

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_resourcesource中,可以以&.结尾[例如]。你知道吗

到目前为止

regex = re.compile("pf_rd_m=ATVPDKIKX0DER+[&.]")
regex.findall(source)
[u'pf_rd_m=ATVPDKIKX0DER&']

我用了这里的课文。与其使用文本,不如使用带有&.source_resource变量来找到答案。你知道吗


Tags: comrefhttpsourceamazonwwwrdresource
3条回答

您还必须避开.

pattern=re.compile(source_resource + '[&\.]')

如果目标是提取pf_rd_m值(这显然是因为您正在使用regex.findall),那么我不确定regex是最简单的解决方案:

>>> 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']

您可以像普通字符串一样为正则表达式构建字符串,利用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.']

我希望这就是你的意思。你知道吗

请注意,我修改了您的正则表达式:.是一个特殊的符号,需要转义,正如+(我只是假设字符串只出现一次,这就不需要使用+了)。你知道吗

相关问题 更多 >