RegEx省略字符串之间的特定单词

时间:2019-04-15 22:22:41

标签: regex atom-editor

我想从此字符串中检索名称,但它不应该使用RegEx消耗" and "s

author={GenTSCH, JoN R and Glass, RI and Woods, P and Gouvea, V and Gorziglia, M and Flores, J and Das, BK and Bhan, MK}

到目前为止,我已经写了(?<author={).*(?=}),但是它捕获了{}中的所有字符串

我正在原子编辑器中运行RegEx来捕获文件中的字符串。

我想要的输出是选择括号内除\sand\s之外的整个字符串。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

该模式完全归功于@Wiktor!这行得通...同时了解到python regex模块与re模块 (后者在标准库中,我怀疑regex101使用的是:o)

import regex
pattern = r"(?:author={|\G(?!\A)\s+and\s+)\K(?:(?!\sand\s)[^{}])+"
test_str = "author={GenTSCH, JoN R and Glass, RI and Woods, P and Gouvea, V and Gorziglia, M and Flores, J and Das, BK and Bhan, MK}"
print(regex.findall(pattern, test_str))  

##  ['GenTSCH, JoN R', 'Glass, RI', 'Woods, P', 'Gouvea, V', 'Gorziglia, M', 'Flores, J', 'Das, BK', 'Bhan, MK']