“如何提取”的文本标题第1级“;(标题及其段落)是否来自使用python的标记字符串/文档?

“如何提取”的文本标题第1级“;(标题及其段落)是否来自使用python的标记字符串/文档?,python,regex,text,markdown,text-extraction,Python,Regex,Text,Markdown,Text Extraction,我需要提取与传递给python函数的标题级别1字符串相匹配的文本(标题及其段落)。 下面是我工作的mardown文本示例: # My first header ## Nec sic igni ad ad aventi Lorem markdownum quantumque nunc, fine superi sagittis, haut regalis attollo, ora inferius, mensor deam? Sedili quoque tauri. Quo limite du

我需要提取与传递给python函数的标题级别1字符串相匹配的文本(标题及其段落)。 下面是我工作的mardown文本示例:

# My first header

## Nec sic igni ad ad aventi

Lorem markdownum quantumque nunc, fine superi sagittis, haut regalis attollo,
ora inferius, mensor deam? Sedili quoque tauri. Quo limite ducem.

1. Arva fecit partes tosta
2. Insignia est ausae ut ut ait
3. O summa saepe

Sic ipsos, Phlegethontide nisi poterat neque quos tum partes rapitur. Filius
utraque: glande, ut exiles terram fiducia coeunt. Et caelo legit multis,
plangorem altoque; et iamque nec. Sanguine corpora prora quicquid insolida in
Parin: stupet est posses nos mater temptat, gemit num.

# My second header

## Primordia metuam his dixerat talaria cognoscenda

Lorem markdownum revulsum dilexit contra. Qui seu supplex Themis profuit quoque
Hyperionis, omnibus aesculus signa medendi. Aspiciunt rigidique finibus ducunt
postquam, huic postera lignum, properent.

- Nostro purgamina capitque longis
- Virtus suo moenibus
- Byblida longum pudibunda referre
- Via in ab vulneribus petita mirantur quamquam
- Et vela
- Nondum sacer meminisse Dircen novas dumque
例如,我需要从上面的文本中提取标题“我的第二个标题”的所有文本

我正在尝试使用正则表达式,但没有找到解决问题的正确规则

def findHeader("My second header")
r = re.compile(r"the regular expression")
    print(r.findall(text))
findHeader输出:

# My second header

## Primordia metuam his dixerat talaria cognoscenda

Lorem markdownum revulsum dilexit contra. Qui seu supplex Themis profuit quoque
Hyperionis, omnibus aesculus signa medendi. Aspiciunt rigidique finibus ducunt
postquam, huic postera lignum, properent.

- Nostro purgamina capitque longis
- Virtus suo moenibus
- Byblida longum pudibunda referre
- Via in ab vulneribus petita mirantur quamquam
- Et vela
- Nondum sacer meminisse Dircen novas dumque

如果我理解正确,您试图在每行的开头只捕获一个#符号

帮助您解决此问题的正则表达式是:
r”(?:^\s)(?:[\\]\)(.*\n+\\\([^\]*\n)+)“
。括号用于分隔捕获组或非捕获组。第一个组
(?:^ |\s)
是非捕获组,因为它以问号开头。在这里,您希望匹配的字符串以一行或空白开头,然后在第二组
([#]\)
[#]
将恰好匹配一个字符<代码>\匹配哈希和h1标记文本内容之间的空格。最后,您希望匹配任何可能的字符,直到行尾,因此使用特殊字符her
,它标识任何字符,后跟将匹配先前匹配字符的任何重复的
+

这可能就是您要查找的代码片段,我使用您使用的相同示例测试对其进行了测试

import re

text = """
# My first header

## Nec sic igni ad ad aventi

Lorem markdownum quantumque nunc, fine superi sagittis, haut regalis attollo,
ora inferius, mensor deam? Sedili quoque tauri. Quo limite ducem.

1. Arva fecit partes tosta
2. Insignia est ausae ut ut ait
3. O summa saepe

Sic ipsos, Phlegethontide nisi poterat neque quos tum partes rapitur. Filius
utraque: glande, ut exiles terram fiducia coeunt. Et caelo legit multis,
plangorem altoque; et iamque nec. Sanguine corpora prora quicquid insolida in
Parin: stupet est posses nos mater temptat, gemit num.

# My second header

## Primordia metuam his dixerat talaria cognoscenda

Lorem markdownum revulsum dilexit contra. Qui seu supplex Themis profuit quoque
Hyperionis, omnibus aesculus signa medendi. Aspiciunt rigidique finibus ducunt
postquam, huic postera lignum, properent.

- Nostro purgamina capitque longis
- Virtus suo moenibus
- Byblida longum pudibunda referre
- Via in ab vulneribus petita mirantur quamquam
- Et vela
- Nondum sacer meminisse Dircen novas dumque
"""

r = re.compile(r"r"(?:^|\s)(?:[#]\ )(.*\n+##\ ([^#]*\n)+)"")
print(r.findall(text))
如果您只想提取段落文本,那么可以使用以下正则表达式:
r“(?:^\s)(?:[\]\)(.+)”
,这与前面的类似,但它只是从捕获组中删除#符号

,这样做:

重新导入
text=”“”
#我的第一个头球
##Nec sic igni ad ad aventi
Lorem markdownum quantumque nunc、精致的上矢状体、高级帝王阿托洛、,
地狱之神,死亡之门?塞迪利·库奎尔·金牛座。
1.阿瓦费吉特托斯塔分公司
2.徽章是我们的
3.O summa saepe
首先是益普索(ipsos),这是一种快速发展的疾病
乌特拉奎:格兰德。
#我的第二个头球
##同源距骨原基
洛雷姆·马克唐恩的反讽。我的柔韧性很好
海波顿综合征。
-长头鼻甲
-苏莫尼布病毒
#我的第三个头球
##同源距骨原基
洛雷姆·马克唐恩的反讽。我的柔韧性很好
postquam,huic postera lignum,适当。
"""
def findHeader(搜索):

r=re.compile(r)(?你尝试过什么?什么不起作用?你得到了什么?你期望得到什么?你的代码有什么不起作用?它在哪里?我尝试过一些正则表达式,但我无法提取以“#我的头”开头的文本“而且是段落。问题是,在某些情况下,标题以#开头,以下一个标题结尾,但在其他情况下,没有像“#我的第二个标题”这样的下一个标题”在上面的例子中。如果正则表达式是解决方案,我需要一个帮助来制定一个好的正则表达式…请,并添加您尝试过的内容和预期的结果。我编辑了问题并添加了输出示例和python函数谢谢您的回答,但是使用正则表达式,您只能提取标题,但我需要提取标题文本我已经编辑了添加输出示例的问题,因此如果H1和H2标记的结构始终相同,请尝试使用以下正则表达式:
r“(?:^\s)(?:[\\]\)(.*\n+\([^\35;]*\ n)+”
此正则表达式的结果为空。我需要将标题的名称传递给findHeader函数,如我在底部问题中所述。findHeader(“我的第二个标题”)正则表达式需要使用函数输入来匹配和提取标题及其段落,如问题中的函数输出示例中所示。感谢您的帮助,它可以正常工作,但我有一条警告消息:DeprecationWarning:标记不在表达式“(?@FedericoFore:删除
(?s)的开头
并将最后一部分更改为
r“(?:(?!)?