gpt4 book ai didi

python - 正则表达式 多行 Python

转载 作者:行者123 更新时间:2023-12-01 03:55:32 24 4
gpt4 key购买 nike

我目前正在尝试在 python 上做一个应该匹配多行的正则表达式。

([0-9]{2}\.[0-9]{2}\.[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*?\r\n-{1,}\sFG\s{3,}?4

是我的正则表达式,这是我的Python调用

re.findall("([0-9]{2}\.[0-9]{2}\.[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*?\r\n-{1,}\sFG\s{3,}?4.*?", content, flags=re.M)

但是,当我在 Notepad++ 中使用正则表达式时,它为我提供了正确的匹配项,而在 python 中它根本不匹配任何内容(这里是一个在 npp 中匹配但在 python 中不匹配的示例字符串)

2016年4月19日 01:59:18 航空自卫队

---- FG 3

 --------------- ASDF

2016年4月19日 01:59:21 航空自卫队

---- FG 4

 --------------- ASDF

2016年4月19日 01:59:22 航空自卫队

---- FG 4

 --------------- ASDF

我也确信实际上有一个\r\n 因为 npp 为我提供了匹配项。

由于我使用多行标志,我完全不知道为什么我的正则表达式不起作用。

最佳答案

请注意,在显示的更正输入中,模式的 FG\s{3,}?4 部分避免了匹配,因为 FG 之间的单个空格不匹配>和4

#! /usr/bin/env python
from __future__ import print_function
import re

content = "19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4 "
pattern = (r'([0-9]{2}\.[0-9]{2}\.[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*?'
r'\r\n-{1,}\sFG\s{1,}?4.*?')
print(re.findall(pattern, content, flags=re.M))

给我(未使用 python 2.7.11 和 3.5.1 修改):

['19.04.2016 05:31:03']

编辑:这是由 @poke 转录的更新修改输入示例的版本:

#! /usr/bin/env python
from __future__ import print_function
import re

content = ("19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4"
"\r\n19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4"
"\r\n19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4"
"\r\n19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4"
"\r\n19.04.2016 05:31:03 ASDFASDF\r\n---- FG 4")
pattern = (r'([0-9]{2}\.[0-9]{2}\.[0-9]{4}\s[0-9]{2}:[0-9]{2}:[0-9]{2}).*?'
r'\r\n-{1,}\sFG\s{1,}?4.*?')
print(re.findall(pattern, content, flags=re.M))

给出(正如预期的那样):

['19.04.2016 05:31:03', '19.04.2016 05:31:03', '19.04.2016 05:31:03', '19.04.2016 05:31:03', '19.04.2016 05:31:03']

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

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