假设我在python中有一些以某些数字结尾的字符串。
2te2xt12
text1
text143
te2xt341
如何获得最正确的数字序列:
2te2xt12 >> 12
text1 >> 1
text143 >> 143
te2xt341 >> 341
有没有简单易行的方法。
我对re一无所知
预先感谢
答案 0 :(得分:4)
import re
s=r"""1231ololo767980716"""
re.match('.*?([0-9]+)$', s).group(1)
>>> '767980716'
或
next(re.finditer(r'\d+$', s)).group(0)
>>> '767980716'
正则表达式组件的说明:
.*?
是非贪婪的匹配项,它仅消耗尽可能多的(a
贪婪的匹配会消耗掉除最后一位以外的所有内容。
[0-9]
和\d
是捕获数字的两种不同方式。请注意,后者也与其他书写方式中的数字匹配,例如୪
或൨
+
表示多个条目(末尾至少一个数字)。$
仅匹配输入的结尾。以及您可以在此处找到的所有组件:https://www.rexegg.com/regex-quickstart.html非常有用的备忘单
答案 1 :(得分:1)
尝试一下?功能测试应该可以满足您的需求。
import re
def test(string):
m = re.search(r'\d+$', string)
if m is not None:
print(m.group())
答案 2 :(得分:1)
使用正则表达式File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3088, in <module>
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3072, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3101, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 574, in _build_master
ws.require(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 892, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 778, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'awsebcli==3.12.1' distribution was not found and is required by the application
的这段代码应该可以为您提供真正想要的东西,
\d+$
打印
import re
arr = ['2te2xt12',
'text1',
'text143',
'te2xt341']
for s in arr:
m = re.search(r'\d+$', s)
if (m):
print(s + ' >> ' + m.group())
答案 3 :(得分:0)