Python正则表达式:在较大的文本块中获取特定文本,同时跳过一些行
正如标题所提到的,我的目标是从更大的文本块中获取特定的文本部分。这个“父文本”总是不同的,但是我正在寻找的特定“子”文本的格式总是相同的 下面是一个虚构的文本块示例(有些人可能会认识到它有wiki标记) 在Python中,我想使用某种正则表达式,遵循以下步骤:Python正则表达式:在较大的文本块中获取特定文本,同时跳过一些行,python,regex,string,Python,Regex,String,正如标题所提到的,我的目标是从更大的文本块中获取特定的文本部分。这个“父文本”总是不同的,但是我正在寻找的特定“子”文本的格式总是相同的 下面是一个虚构的文本块示例(有些人可能会认识到它有wiki标记) 在Python中,我想使用某种正则表达式,遵循以下步骤: 查找“=标题=” 跳过一个空行 抓取所有文本,直到遇到下一个空行 这样的话,输出将是: * [[GARY]]: description * [[BOB]]: title * [[JAKE]]: blahblah * [[SALLY]]:
* [[GARY]]: description
* [[BOB]]: title
* [[JAKE]]: blahblah
* [[SALLY]]: text
* [[JOHN]]: text
我曾在regex101.com上玩过,但无法获得符合上述规则集的任何内容。可能regex甚至不是这个工作的合适工具,但我一直找不到任何其他似乎可行的工具。如果“child”格式始终相同,我们可以用一个简单的regex实现您所描述的。您只需捕获=Title=
之后“\n\n”之间的所有内容:
re.search(r'^=\sTitle\s=\n\n(.*?(\n\n)),字符串,re.M | re.DOTALL.group(1)
这看起来很棒。它在我提供的示例中工作得很好,但在实际数据中却不够奇怪。在实际数据上,它将捕获预期输出后的下一行,即使格式相同。是不是因为在实际数据中,它没有“废话废话”,而是有一些其他字符,即html标记example@redskins1234,此正则表达式应正确处理格式为“=Title=\n\n\n”的文本。更仔细地检查数据,确保其格式相同。@redskins1234,明白了,我的错。捕获文本应该是非贪婪的(我们应该添加“?”)。编辑了我的答案。
* [[GARY]]: description
* [[BOB]]: title
* [[JAKE]]: blahblah
* [[SALLY]]: text
* [[JOHN]]: text