python使用正则表达式提取大写单词

时间:2018-09-04 01:36:58

标签: python regex

我想提取大写的单词,该单词在单词“ cell”或“ cells”之前的3或4出现

示例 :

  

简而言之,将如上所述生长的MCF-7细胞用一系列LTX-二醇或异-LTX-二醇处理。

我想从上面的示例中提取MCF-7。

我尝试使用[A-Z0-9-]+cells,但是它返回的单元格而不是MCF-7

1 个答案:

答案 0 :(得分:2)

此答案假设您要匹配以大写字母开头的单词,然后依次匹配1至4个其他单词,然后是cellcells。我们可以尝试使用以下模式进行匹配:

([A-Z][^ ]*)(?=\s+(?:[^A-Z]\S*\s+){1,4}cells?)

模式结尾处的正向前移要求在cellcells之前出现1到4个单词。

input = "Briefly, MCF-7 idential cells grown as described above were treated with a range of LTX-diol or iso-LTX-diol."

r1 = re.findall(r"([A-Z][^ ]*)(?=\s+(?:[^A-Z]\S*\s+){1,4}cells?)", input)
print(r1)

['MCF-7']