python正则表达式 如何找到指定字符后面完整的数字字符串

源串: s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
p = re.compile(r'(19|20)\d{2}')
s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
print p.search(s).group()
print p.findall(s)
我想找到19或20开头的, 后面捡完整的2位数字, 如 上面的表达式,
当调用 search的时候, 我希望输出 1967和1968, 而 p.findall我希望输出['1967','1968']

使用re模块的search函数,能过正则表达式查找,代码如下:

import re
reg=re.compile(r"(?<=指定字符)\d+")
match=reg.search("待查找文本")
print match.group(0)

(?<=指定字符)此部分定位指定字符,查找但不包含

\d+此部分为一个以上数字

这样就可以查找出数字字符串

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
1. 首先 p.search(s) 只会找第一个匹配的字符串
2. 其次 p.findall(s) 会记录匹配的组,而(19|20) 代表一个组,应该改成(?:19|20)

以下代码可以满足你的要求:
# -*- coding: utf-8 -*-
from __future__ import print_function, division
import re

s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
p = re.compile(r'(?:19|20)\d{2}')
#s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
all_items = re.findall(p,s)
map(print, all_items)
print(all_items)追问

没有再简单点的方式了么? 比如用一条语句 search或match搞定 多谢

追答

...这已经很简单了..。你追求代码量少?

# -*- coding: utf-8 -*-
import re

s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
p = re.compile(r'(?:19|20)\d{2}')
print " ".join(re.findall(p,s))
print re.findall(p,s)

本回答被提问者采纳

python正则表达式 如何找到指定字符后面完整的数字字符串
使用re模块的search函数,能过正则表达式查找,代码如下:import rereg=re.compile(r"(?<=指定字符)\\d+")match=reg.search("待查找文本")print match.group(0)(?<=指定字符)此部分定位指定字符,查找但不包含 \\d+此部分为一个以上数字 这样就可以查找出数字字符串 ...

python查询某个字串后多少个字符(Python查找某字符个数)
python正则表达式 如何找到指定字符后面完整的数字字符串使用re模块的search函数,能过正则表达式查找,代码如下:import re reg=re.compile(r"(?=指定字符)\\d+")match=reg.search("待查找文本")print match.group(0)(?=指定字符)此部分定位指定字符,查找但不包含 \\d+此部分为一个以上数字 这样就...

python 正则表达式,怎样匹配以某个字符串开头,以某个字符串结尾的情况...
1、假设需要匹配的字符串为:site sea sue sweet see case sse ssee loses 需要匹配的为以s开头以e 结尾的单词。 正确的正则式为:\\bs\\S*?e\\b 2、使用python中re.findall函数表示匹配字符串中所有的可能选项,re是python里的正则表达式模块。findall是其中一个方法,用来按照提供的正则表达式,去...

python怎么样获取某个文件行指定字符串后面的字符?
把每行读取后去掉前面不要的部分就可以了,这种简单处理不需要用正则,正则是用来进行复杂处理的。比如读一行到s,然后 r,_,s=s.partition('指定字符串')现在,r是不要的部分,s就是指定字符串后的部分,如果有结果的话,_的值也是指定字符串。

python中如何取出字符串中最后一个特定字符后的字符串
在a中查找最后一个b后面的字符 a="ABCDEFGHIJABCDEFGHIJABCDEFGHIJ"b="H"print(a[a.rfind(b):])或:str = "addhakshdaskhdsak---12345.0"str.find("12345.0") 找到"12345.0"所在位置的index str[str.find("12345.0") - 1]即是需要的字符 ...

python正则表达式,匹配开头和结尾获取字符串
import reA = '''METAR ZBAA 230330Z 13002MPS 090V170 CAVOK 32\/22 Q1006 NOSIG= <BR\/>METAR ZBAA 230300Z 13003MPS 090V160 CAVOK 32\/23 Q1007 NOSIG= <BR\/>SPECI ZBAA 230330Z 13002MPS 090V170 CAVOK 32\/22 Q1006 NOSIG= <BR\/>'''reg = re.findall(r'(?:METAR|SPECI)+[^=...

python 循环获取指定字符串后面的字符
>>> import re >>> reg=re.compile("(\\w+)=:(\\w+)")>>> s="""SELECT VC_TRADEACCO AS tradeacco FROM TACCOBANK WHERE VC_BANKACCO=:getBANKACCO AND VC_FUNDCODE=:getFUNDCODE""">>> reg.findall(s)[('VC_BANKACCO', 'getBANKACCO'), ('VC_FUNDCODE', 'getFUNDCODE')]>...

python 提取字符串中的数字
使用正则表达式,用法如下:总结 ^ 匹配字符串的开始。匹配字符串的结尾。\\b 匹配一个单词的边界。\\d 匹配任意数字。\\D 匹配任意非数字字符。x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。x* 匹配0次或者多次 x 字符。x+ 匹配1次或者多次 x 字符。x{n,m} 匹配...

python 怎么取出字符串中的数字子串?
要提取时间的话,用正则表达式吧

python 正则表达式 匹配以指定字符串结尾的
这样 pattern='.+\\.(css|img|js)$'m=re.match(p,url)if m!=None:符合 else:不符合

相似回答