gpt4 book ai didi

python - 用于捕获部分字符串的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:33 37 4
gpt4 key购买 nike

我正在尝试使用 Python 的 re 库在 .md 文档中获取顶级 Markdown 标题(即以单个散列开头的标题 -- # Introduction),但我终究无法解决这个问题。

这是我要执行的代码:

import re

pattern = r"(# .+?\\n)"

text = r"# Title\n## Chapter\n### sub-chapter#### What a lovely day.\n"

header = re.search(pattern, text)
print(header.string)

print(header.string) 的结果是:

# Title\n## Chapter\n### sub-chapter#### 多么美好的一天。\n 而我只想要 # Title\n

这个关于 regex101 的例子说它应该可以工作,但我不明白为什么不行。 https://regex101.com/r/u4ZIE0/9

最佳答案

你得到那个结果是因为你使用了调用 .stringheader.stringMatch object 上这将返回传递给 match() 或 search() 的字符串。

字符串中已经有换行符:

text = r"# Title\n## Chapter\n### sub-chapter#### What a lovely day.\n"

因此,如果您使用您的模式(请注意,它也将匹配换行符),您可以将代码更新为:

import re

pattern = r"(# .+?\\n)"
text = r"# Title\n## Chapter\n### sub-chapter#### What a lovely day.\n"
header = re.search(pattern, text)
print(header.group())

Python demo

请注意 re.search查找正则表达式产生匹配项的第一个位置。

匹配您的值的另一个选项可能是从字符串的开头匹配 # 后跟一个空格,然后是除换行符之外的任何字符,直到字符串结尾:

^# .*$

例如:

import re

pattern = r"^# .*$"
text = "# Title\n## Chapter\n### sub-chapter#### What a lovely day.\n"
header = re.search(pattern, text, re.M)
print(header.group())

Python demo

如果后面不能再有#,你也可以使用negated character class不匹配 # 或换行符:

^# [^#\n\r]+$

关于python - 用于捕获部分字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56310045/

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