構文解析されたテキストの文字列があります。
s = 'ROOT (S (VP (VP (VB the) (SBAR (S (NP (DT same) (NN lecturer)) (VP (VBZ says)'
「同じ」を s に一致させたいと思います。「the」と「same」は、構文マークアップ ((、NP、S など) で区切られた場合にのみ一致することが重要です。したがって、「同じ」は s2 で一致を見つけるべきではありません。
s2= 'ROOT (S (VP (VP (VB the) (SBAR (S (NP (DT lecturer) (NN same)) (VP (VBZ says)'
私は無駄に二重否定先読みアサーションを試みました:
>>>rx = r'the(?![a-z]*)same(?![a-z]*)'
>>>re.findall(rx,s)
[]
小文字が続かない場合は「the」に一致し、小文字が続かない場合は「same」に一致するという考え方です。
誰もがより良いアプローチを持っていますか?