我有一个带有无效格式的解析树,其中包裹在括号中的单词。
string = (NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))
我试图删除括号,而没有内部的单词,我删除了所有括号。
re.sub(r'[()]','',string)
这也行不通。
re.sub(r's(.*)))
因为我认为基于第二个封闭括号的模式,例如
(Police)) (for)) (*)) (secure)) (olympic games))
我想删除在没有这样删除单词的情况下侧翼的括号。有帮助吗?
result = (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))
您可以使用
re.sub(r'(([^()]*))', r'1', s)
请参阅正则演示。
详细信息
-
(
-a(
char -
([^()]*)
-第1组(1
是指此组值从替换模式中):0或更多chars
以外的其他字符
-
)
-
请参阅Python演示:
import re
s = "(NP (NN (Police)) (SBAR (SC (for)) (S (NP-SBJ (*)) (VP (VB (secure)) (NP (NN (olympic games)))))))"
print(re.sub(r'(([^()]*))', r'1', s))
# => (NP (NN Police) (SBAR (SC for) (S (NP-SBJ *) (VP (VB secure) (NP (NN olympic games))))))