Python regex,两个否定的lookahead语句

2024-04-29 03:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一系列语法分析的文本:

 s = 'ROOT (S (VP (VP (VB the) (SBAR (S (NP (DT same) (NN lecturer)) (VP (VBZ says)'

我想把'same'和'same'匹配。关键是'the'和'same'只有在用语法标记隔开时才匹配(例如,(,NP,s等)。因此,“相同”不应在s2中找到匹配项:

^{pr2}$

我尝试过双重否定的前瞻性断言,但没有成功:

 >>>rx = r'the(?![a-z]*)same(?![a-z]*)'
 >>>re.findall(rx,s)
 []

这样做的目的是在后面不跟小写字符时匹配“The”,然后在后面不跟小写字符时匹配“same”。在

有人有更好的方法吗?在


Tags: the文本npdtrootnnrx字符
1条回答
网友
1楼 · 发布于 2024-04-29 03:19:38

因此,如果the和{}之间的所有字符都不是小写字母,那么您可以在regex中这样写:

the[^a-z]*same

请注意,您可能还需要添加单词边界,这样就不会匹配foothe ... samebar之类的内容,如下所示:

^{pr2}$

相关问题 更多 >