我想在ID' ID'之后提取数字。发生在下面的文字中 这就是我能够得到它的方式。
import re
txt="Recharge done on 28-12-2017 04:57PM,MRP:Rs9.00,GST 18% payable by Company/Distributor/Retailer:Rs1.37, ID 147894886."
# 'ID' need to be present as mandatory group
regex = '(id)(.*?)(\d+})'
rg = re.compile(regex ,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
print m.group(3)
当我运行以下代码时,它会打印
147894886
问题出现了
如果txt变得像这样
txt="Recharge done on 28-12-2017 04:57PM,MRP:Rs9.00,GST 18% payable by Company/Distributor/Retailer:Rs1.37, TransID 147894886."
和" Trans"单词出现在" ID"然后我不想提取数字。如何在正则表达式中执行此操作(即,如果" TransID"在数字之前存在,则不提取数字,但仅当" ID"存在然后提取数字时)
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用字边界(\b
)来确保ID
是一个完整的单词。
\b(id)(.*?)(\d+)
它可能也有助于更少地匹配您的模式。如果您总是ID
后跟一个空格,后跟9个数字,则可以使用此正则表达式:
\b(id)([ ])(\d{9})