gpt4 book ai didi

python - Python 中的正则表达式 - 多行匹配

转载 作者:行者123 更新时间:2023-11-28 16:38:39 25 4
gpt4 key购买 nike

我需要一些关于我在一些 Python 代码中使用的正则表达式的帮助,我几乎已经创建了我需要的表达式,我非常接近。这是我使用的 Python 代码:

import re

def main():

f = open('/tmp/file', 'r')
rexp = re.compile('(?m)^ [*] ''([^ ]+).*\(([^ \)]+)')
upgrades = rexp.findall(f.read())

print upgrades

f.close()

main()

这是/tmp/file 的内容:

Software Update Tool
Copyright 2002-2010 Apple

2014-03-18 14:31:28.958 softwareupdate[5505:3603] No alternate URLs found for packageId MobileDevice
Software Update found the following new or updated software:
* SecUpd2014-001-1.0
Security Update 2014-001 (1.0), 112751K [recommended] [restart]
* Safari6.1.2MountainLion-6.1.2
Safari (6.1.2), 51679K [recommended]
* iTunesXPatch-11.1.5
iTunes (11.1.5), 79522K [recommended]

使用上面的表达式,我得到以下输出:

[('SecUpd2014-001-1.0\n', '1.0'), ('Safari6.1.2MountainLion-6.1.2\n', '6.1.2'), ('iTunesXPatch-11.1.5\n', '11.1.5')]

对于我的问题,我怎样才能改变我的表达方式使输出变成这样?

[('SecUpd2014-001-1.0', '1.0'), ('Safari6.1.2MountainLion-6.1.2', '6.1.2'), ('iTunesXPatch-11.1.5', '11.1.5')]

我一直在寻找类似的场景,但正则表达式往往非常具体,所以我找不到任何有用的东西。如果您需要更多信息,请直接询问,我将不胜感激。

最佳答案

在您的正则表达式中使用 [\n\r] 将其放在捕获之外将为您解决问题。

rexp = re.compile('(?m)^   [*] ''([^ ]+)[\n\r].*\(([^ \)]+)')
^^^^^^

关于python - Python 中的正则表达式 - 多行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com