如何在python正则表达式中找到字符串的特定部分?

2024-09-27 21:24:59 发布

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

case1 = http:www.freejobalert.comupsc-advt-no-18337
case2 = http:www.freejobalert.comupsc-advt-no-1833742
job_id = (''.join(re.findall(r'\d{7}:\d{5}',case1,re.I)))

如何使用正则表达式从上面的字符串中仅找到33742。 数字可能是5或7个字符


Tags: no字符串reidhttpwwwjob数字
3条回答

前面提到的两个答案都是解决你问题的方法,我总结如下:

>>> import re
>>> case1 = "http:www.freejobalert.comupsc-advt-no-18337"
>>> case2 = "http:www.freejobalert.comupsc-advt-no-1833742"
>>> job_id1 = (''.join(re.findall(r'\d{5,7}',case1,re.I)))
>>> job_id2 = (''.join(re.findall(r'\d{5,7}',case2,re.I)))
>>> job_id1
'18337'
>>> job_id2
'1833742'

>>> job_id3 = (''.join(re.findall(r'\d{5}|\d{7}',case1,re.I)))
>>> job_id4 = (''.join(re.findall(r'\d{5}|\d{7}',case2,re.I)))
>>> job_id3
'18337'
>>> job_id4
'18337'

问题是您没有使用“or”(|),而是使用冒号;尝试使用:

\d{7}|\d{5}

它应该返回字符串中的数字

您也可以尝试类似于\d{5,7}的方法,意思是5到7(包括5和7)之间的数字

job_id = (''.join(re.search(r'(\d{5,7})',case1,re.I)))

默认行为将是贪婪的,这意味着它将匹配5到7位之间尽可能多的数字

编辑(另一个可能更容易理解的选项,但会做同样的事情):

job_id = re.search(r'(\d{5,7})',case1).group(1)

相关问题 更多 >

    热门问题