3 回答
TA贡献1803条经验 获得超3个赞
您可以使用
r'(\d+(?:-\d+)?\+?)\s*(years?)'
请参阅正则表达式演示。使用re.I
标志编译以启用不区分大小写的匹配。
细节
(\d+(?:-\d+)?\+?)
- 第 1 组:\d+
- 1+ 位数字(?:-\d+)?
- 一个可选的组匹配-
,然后是 1+ 位数字\+?
- 一个可选的+
字符\s*
- 0+ 个空格(years?)
- 第 2 组:year
或years
Python 演示:
import re
rx = re.compile(r"(\d+(?:-\d+)?\+?)\s*(years?)", re.I)
strs = ["10+ years", "10 years", "1 year", "10-15 years"]
for description in strs:
exp_temp = rx.search(description)
if exp_temp:
print(exp_temp.groups())
输出:
('10+', 'years')
('10', 'years')
('1', 'year')
('10-15', 'years')
TA贡献1777条经验 获得超3个赞
([\d+-]+)\s+(years?)
import re
x ="""
123 10+ years some text
some text 99 10 years ssss
text 1 year and more text
some text 10-15 years some text
"""
result = re.findall(r"([\d+-]+)\s+(years?)", x, re.IGNORECASE)
print(result)
[('10+', 'years'), ('10', 'years'), ('1', 'year'), ('10-15', 'years')]
正则表达式说明:
添加回答
举报