【问题标题】:Regex Python Grouping [duplicate]正则表达式 Python 分组 [重复]
【发布时间】:2019-01-25 12:31:39
【问题描述】:

我正在尝试生成以下“查询 ID:XYZABC”

我的代码如下来自一个 .txt 文件,该文件具有以下“Query= xyxysdfl;jas”的一个实例

#!/usr/bin/env python3

import re

for line in open("/home/example.txt"):
    query_id = re.search(r"Query=(.*$)", line)
    if query_id != None:
        print("Query ID: " + query_id.group())

这会产生以下内容:

查询 ID:Query= xyslkjjdf

如何消除“查询=”?我以为我是通过包含 (.*$) 来做到这一点的?

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您需要获取第一个捕获的组:

    query_id.group(1)
    

    没有任何明确的组引用第 0 个组,即生成整个匹配项。


    注意事项:

    • None 是 Python 中的单例,所以通过is 进行身份检查:

      if query_id is not None:
      

      或者更好,因为None 是假的,你可以做真假检查:

      if query_id:
      
    • 这不是绝对需要的,但为了便于阅读,您应该将行尾说明符 $ 留在捕获的组之外:

      (.*)$
      

    考虑到注释,最终形式可能是:

    query_id = re.search(r"Query=(.*)$", line)
    if query_id:
        print("Query ID: " + query_id.group(1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2011-11-27
      • 2010-12-31
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 2016-11-16
      相关资源
      最近更新 更多