gpt4 book ai didi

python - 使用正则表达式提取某些短语,但排除后跟单词 "of"的短语

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:11 24 4
gpt4 key购买 nike

我基本上是想从一个长文档中提取部分引用。

下面的代码做得很好:

example1 = 'Sections 21(1), 54(2), 78(1) of Harry Potter'
res = re.search(r'Sections?\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*', example1)
res.group(0)

输出:“第 21(1)、54(2)、78(1) 条”

但是,这些部分经常引用外部书籍,我想指出这些内容或排除它们。一般来说,如果引用另一本书,则该部分引用后面会跟一个“of”(下面的示例):

example2 = 'Sections 21(1), 54(2), 78(1) of Harry Potter'

因此,在这种情况下,我想排除这些部分,因为它们引用了《哈利·波特》而不是文档中的部分。以下内容应该可以实现此目的,但它不起作用。

example2 = 'Sections 21(1), 54(2), 78(1) of Harry Potter'
res = re.search(r'Sections?(\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*)(?!\s+of)', example2)
res.group(0)

预期输出:第 21(1)、54(2)、78 节 --> (?!\s+of) 删除 (1 )78 后面,但不是整个引用。

最佳答案

您可以使用捕获组和前瞻来模拟原子组:

(?=(?P<section>Sections?\W+(\w+)(\(\w+\))?(, (\w+)(\(\w+\))?)*))(?P=section)(?! of)

Demo

长话短说: * 在正向前瞻中,您创建一个名为 section 的捕获组,用于查找部分模式 * 然后你匹配 (?P=section) 中的组内容 * 然后在负向预测中检查是否没有of跟随

这是一个really good answer这解释了该技术。

关于python - 使用正则表达式提取某些短语,但排除后跟单词 "of"的短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233067/

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