2024-09-27 21:24:59 发布
网友
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个字符
前面提到的两个答案都是解决你问题的方法,我总结如下:
>>> 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)之间的数字
\d{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)
前面提到的两个答案都是解决你问题的方法,我总结如下:
问题是您没有使用“or”(
|
),而是使用冒号;尝试使用:它应该返回字符串中的数字
您也可以尝试类似于
\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)
相关问题 更多 >
编程相关推荐