Python 提取文本右侧的数字

Python 提取文本右侧的数字,python,Python,假设python中有一些字符串以数字结尾 2te2xt12 text1 text143 te2xt341 如何获得最正确的数字序列: 2te2xt12 >> 12 text1 >> 1 text143 >> 143 te2xt341 >> 341 有一种简单易行的方法吗 我对re一无所知 提前谢谢 import re s=r"""1231ololo767980716""" re.match('.*?([0-9]+)$',

假设python中有一些字符串以数字结尾

2te2xt12
text1
text143
te2xt341
如何获得最正确的数字序列:

2te2xt12  >>  12
text1     >>  1
text143   >>  143
te2xt341  >>  341
有一种简单易行的方法吗

我对re一无所知

提前谢谢

import re
s=r"""1231ololo767980716"""
re.match('.*?([0-9]+)$', s).group(1)

>>> '767980716'

regexp组件的说明:

  • *?
    是一种非贪婪匹配,只消耗尽可能多的能量(a 贪婪匹配将消耗除最后一个数字以外的所有内容)

  • [0-9]
    \d
    是捕获数字的两种不同方式。请注意,后者还与其他写入方案中的数字匹配,如

  • 括号(())使表达式的内容成为一个组,可以使用组(1)检索该组(或第二个组为2,整个匹配为0)
  • +
    表示多个条目(末尾至少有一个数字)
  • $
    只匹配输入的结尾

您可以在这里找到的所有组件:非常有用的备忘单

试试这个?功能测试应该满足您的需要

import re

def test(string):
    m = re.search(r'\d+$', string)
    if m is not None:
        print(m.group())

在python中使用正则表达式非常简单

re.findall('\d+$',yourString)[0]

要了解有关正则表达式的更多信息,请参阅文档

这段使用regex
\d+$
的代码应该可以得到您想要的内容

import re

arr = ['2te2xt12',
'text1',
'text143',
'te2xt341']

for s in arr:
 m = re.search(r'\d+$', s)
 if (m):
  print(s + ' >> ' + m.group())
印刷品

2te2xt12 >> 12
text1 >> 1
text143 >> 143
te2xt341 >> 341

谢谢我怎样才能得到te2xt341>>te2xt@KhalilAlHooti使用正则表达式组。在上面的答案中,您可以修改为m=re.search(r'(.*?)(\d+$),string),然后print(m.group(1))去获取te2xt,print(m.group(2))获取341Glad以获得帮助:)
2te2xt12 >> 12
text1 >> 1
text143 >> 143
te2xt341 >> 341