如何使用正则表达式在PDF中搜索括号中除特定单词集以外的所有单词?

时间:2019-07-19 18:52:40

标签: python regex regex-negation findall

我正在尝试通过一个8页的PDF文件搜索括号内的所有单词,除了“(EAI),(EY)”和其他几个单词。我正在使用一个正则表达式,并且可以在括号内全部说出三个字母,但是我不知道如何排除我想排除的内容。

import re
lines = text.split()
search = "\(\D{3}\)"
regex = re.compile(search)

for line in lines:
    three_letters= regex.findall(line)
    for word in three_letters:
    print(word)

我得到以下列表:

(FBS) (NFS) (IAD) (CD) (CD) (EAI) (EAI) (EAI) (VIG) (EAI) (EAI) (NTF) (DRP) (EAI) (IAD)

但是我需要排除其中的一些。

一段时间以来,我一直在努力奋斗,请帮忙!

1 个答案:

答案 0 :(得分:3)

与此一起使用findall函数(匹配3个字母)

\((?!(?:list|of|stuff|you|don't|want)\))[A-Z]{3}\)

格式化

 \(
 (?!
      (?:
           list
        |  of
        |  stuff
        |  you
        |  don't
        |  want 
      )
      \)
 )
 [A-Z]{3} 
 \)

指定一个范围以使其可变。
此示例匹配2到5个字母{2,5}
或者,上限为2,没有上限仅为{2,}

\((?!(?:list|of|stuff|you|don't|want)\))[A-Z]{2,5}\)