Python re(regex)匹配包含字母、连字符和数字的特定字符串

2024-10-01 22:29:18 发布

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

我正在使用python正则表达式包re尝试匹配python 2.7中的以下字符串,但在编写正则表达式代码时遇到了问题:

https://www.this.com/john-smith/e5609239
https://www.this.com/jane-johnson/e426609216
https://www.this.com/wendy-saad/e172645609215
https://www.this.com/nick-madison/e7265609214
https://www.this.com/tom-taylor/e17265709211
https://www.this.com/james-bates/e9212

因此前缀是固定的“https://www.this.com/”,然后是可变数量的小写字母,然后是“-”,然后是“e”,然后是可变数量的数字。你知道吗

以下是我尝试过却无济于事的:

href=re.compile("https://www.this.com/people-search/[a-z]+[\-](?P<firstNumBlock>\d+)/")

href=re.compile("https://www.this.com/people-search/[a-z][\-][a-z]+/e[0-9]+")

谢谢你的帮助!你知道吗


Tags: 字符串代码httpsrecomsearch数量www
3条回答
re.compile(r'https://www.this.com/[a-z-]+/e\d+')

[a-z-]+匹配john-smithe\d+匹配e5609239

href=re.compile("https://www\.mylife\.com/people-search/[a-z]+-[a-z]+/e[0-9]+")

Try out here.

您遇到了转义特殊字符的问题。因为您没有使用原始字符串,所以反斜杠在字符串文本本身中有特殊的含义。此外,字符类(带有[])不需要在正则表达式中转义。您可以将表达式简化如下:

expression = r"https://www.mylife.com/people-search/[a-z]+-[a-z]+/e\d+"

具有以下数据:

strings = ['https://www.mylife.com/people-search/john-smith/e5609239',
 'https://www.this.com/people-search/jane-johnson/e426609216',
 'https://www.this.com/people-search/wendy-saad/e172645609215',
 'https://www.this.com/people-search/nick-madison/e7265609214',
 'https://www.this.com/people-search/tom-taylor/e17265709211',
 'https://www.this.com/people-search/james-bates/e9212']

结果:

>>> for s in strings:
...     print(re.match(expression, s))
...
<_sre.SRE_Match object; span=(0, 56), match='https://www.this.com/people-search/john-smith/e>
<_sre.SRE_Match object; span=(0, 60), match='https://www.this.com/people-search/jane-johnson>
<_sre.SRE_Match object; span=(0, 61), match='https://www.this.com/people-search/wendy-saad/e>
<_sre.SRE_Match object; span=(0, 61), match='https://www.this.com/people-search/nick-madison>
<_sre.SRE_Match object; span=(0, 60), match='https://www.this.com/people-search/tom-taylor/e>
<_sre.SRE_Match object; span=(0, 54), match='https://www.this.com/people-search/james-bates/>

相关问题 更多 >

    热门问题