Python 2.7 如果找到关键字组,如何停止正则表达式搜索前瞻(已关闭)

Python 2.7 如果找到关键字组,如何停止正则表达式搜索前瞻(已关闭),python-2.7,regex-negation,regex-lookarounds,regex-group,Python 2.7,Regex Negation,Regex Lookarounds,Regex Group,我有以下字符串,我需要在其上运行搜索以仅提取帐户ID并避免提取与交易相关的ID- 事务处理ID 989 Trx第989号 帐户ID 1234567890 账号1234567890 Acnt第1234567890号 账户#1234567890 身份证号码1234567890 我已经创建了一个正则表达式,只提取出现在文本中的帐户id,像这样提取正则表达式中的第三组 import re txt = <all strings from 1 to 7 one by one> re1="(No.

我有以下字符串,我需要在其上运行搜索以仅提取帐户ID并避免提取与交易相关的ID-

  • 事务处理ID 989
  • Trx第989号
  • 帐户ID 1234567890
  • 账号1234567890
  • Acnt第1234567890号
  • 账户#1234567890
  • 身份证号码1234567890
  • 我已经创建了一个正则表达式,只提取出现在文本中的帐户id,像这样提取正则表达式中的第三组

    import re
    txt = <all strings from 1 to 7 one by one>
    re1="(No.|#|Number|ID)(/s)(\d{10,12})"
    
    rg = re.compile(re1,re.IGNORECASE|re.DOTALL)
    m = rg.search(txt)
    if m:
        print m.group(3)
    

    请帮忙

    解决方案-在正则表达式中使用条件语句

    (transaction|trx)(?(1)|\d{3,12})
    
    解释-

    (交易| trx)
    =>第一组

    (?(1)|\d{3,12})
    =>第二组-其中
    ?(1)
    检查是否找到了第一组,如果没有找到,则匹配
    “|”之后的任何组。
    管道-否则运行
    之前的任何组。

    然后运行=>
    m.group()

    它将返回数字或单词

    在业务逻辑中,对值进行类型转换,并检查是否可以将其类型转换为INT,然后很好。如果没有,那么我们正确计算出的值就不是INT

    (transaction|trx)(?(1)|\d{3,12})