Skip to main content
 首页 » 编程设计

python之Python 正则表达式前瞻中的匹配组

2025年05月04日22lexus

我从 Wordpress 博客中下载了 ~raw 文本数据,结构如下:

POST_ID_1 TITLE_1 DATE_1 
 
This is the text from the first post .. 
 
POST_ID_2 TITLE_2 DATE_2 
 
This is the text from the second post .. 

我写了一些正则表达式来捕获 POST_ID、TITLE 和 DATE。我的目标是创建一个结构如下的 Python 字典:

posts = {'DATE_1': {'post_id': POST_ID_1, 
                    'title': TITLE_1, 
                    'text': 'This is the text from the first post ..' 
                    } 
        } 

捕获 header (POST_ID、TITLE、DATE)的正则表达式如下:

header_regex_raw = r"""(\d+)\s(.*(?=January|February|March|April|May|June|July|August|September|October|November|December))(January|February|March|April|May|June|July|August|September|October|November|December)(\s\d+\,\s\d{4}\b)""" 

我的想法是做类似 re.findall(header_regex_raw + (.*(?={})).format(header_regex_raw) 的事情,但不幸的是这并没有按计划工作。

如何在前瞻中捕获多个组?创建上述字典的更好方法是什么?

请您参考如下方法:

我在 Python re 模块中找到了一个干净的函数:re.split。

header_regex_raw = r"""(\d+)\s(.+?(?=January|February|March|April|May|June|July|August|September|October|November|December))((January|February|March|April|May|June|July|August|September|October|November|December)(\s\d+\,\s\d{4}\b))""" 
header_text_header = re.compile(header_regex_raw) 
ret = header_text_header.split(data.strip()) 

这正是我想要的:它捕获组中的标题元素、另一组中的文本、组中的后续标题元素等。