gpt4 book ai didi

Python和正则表达式从带有罗马数字的docx中提取标题

转载 作者:行者123 更新时间:2023-12-01 08:15:46 28 4
gpt4 key购买 nike

我有一个很大的 docx 文件,其中散布着以下内容:

PART I
PART II
PART III
PART IIIA # part 3, section A
PART IV
PART V
PART VI
PART VII

我正在尝试用 python 编写一个正则表达式,使用 re.matchre.findallre.search。我无法找出正确的正则表达式语法来仅提取上述内容 - 并且 SO 或任何地方都没有给出正确提取罗马数字的示例。

有很多关于如何转换/验证的示例,但没有关于简单正则表达式匹配的示例。我正要离开这个:

[PART].*\s[I]|[II]|[III]|[IIIA]|[IV]|[V]|[VI]|[VII] 

[PART].*\s(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$

但这不起作用 - 我搞乱了“或”部分。 Best other SO article I could find

最佳答案

方括号内的字符仅匹配列出的字符之一,因此在您的情况下,您不应将 PART 放在方括号内。最后您也不需要 $ 因为您正在尝试匹配更大字符串中的子字符串。

假设您的输入字符串存储在变量 s 中,则以下对 re.findall 的调用应返回列表中所有此类出现的情况:

re.findall(r'PART\s+(?=[MDCLXVI])M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})', s)

演示:https://regex101.com/r/NGdyw3/2

关于Python和正则表达式从带有罗马数字的docx中提取标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990444/

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