【问题标题】:Regex- Exclude middle pattern正则表达式 - 排除中间模式
【发布时间】:2020-08-18 13:57:47
【问题描述】:

我正在努力排除或忽略某种模式。

在 excel 中有很多时间戳,后面跟着一个 ID

[0:02:25] 10652A

有时会出现这样混淆的错误

1 [0:03:23] 0652A

这里的1属于0652A,所以应该是10652A.....

如何完成我的代码,以便可以忽略这些错误(中间时间戳部分)以正确匹配 id?

这是我目前所得到的:

starting_digits = re.search(r"^(\d+)", prefix)
id_code = re.search(r"(\d{2,4}.{1,3}):", prefix).group(1)

提前谢谢你!

【问题讨论】:

    标签: python regex excel matching


    【解决方案1】:

    用途:

    # prefix = "1 [0:03:23] 0652A"
    mobj = re.search(r"(\w+)?\s*\[(.*)\]\s*(\w+)", prefix)
    
    id_code = mobj.group(1) + mobj.group(3) if mobj.group(1) else mobj.group(3)
    timestamp = mobj.group(2)
    
    print(id_code, timestamp)
    

    打印出来:

    10652A 0:02:25
    

    您可以测试正则表达式here

    【讨论】:

      【解决方案2】:

      您可以简单地擦除与\s*\[[\d:]+\]\s*匹配的时间戳部分,而不是查找ID的内容

      • 任意数量的空间
      • 左方括号
      • 不止一个digits/:
      • 右方括号
      • 任意数量的空间
      reg = r"\s*\[.*\]\s*"
      
      prefix = "[0:03:23] 0652A"
      print(re.sub(reg, "", prefix))  # 0652A
      
      prefix = "1 [0:03:23] 0652A"
      print(re.sub(reg, "", prefix))  # 10652A
      

      【讨论】:

        【解决方案3】:

        这是删除方括号之间所有文本的解决方案。

        \[.*\]

        【讨论】:

          猜你喜欢
          • 2017-08-12
          • 1970-01-01
          • 1970-01-01
          • 2014-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-08
          • 1970-01-01
          相关资源
          最近更新 更多