正则表达式 Python 分组 [重复]

Posted

技术标签:

【中文标题】正则表达式 Python 分组 [重复]【英文标题】:Regex Python Grouping [duplicate] 【发布时间】: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

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

【问题讨论】:

【参考方案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))

【讨论】:

以上是关于正则表达式 Python 分组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:匹配单个数字重复n次

python正则表达式--分组后向引用前(后)向断言

python五十八课——正则表达式(分组)

python学习正则表达式进阶

Python 正则表达式 利用括号分组

python爬虫(二十三) 正则表达式分组