仅在嵌套括号中删除括号



我有一个带有无效格式的解析树,其中包裹在括号中的单词。

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))))))

相关内容

  • 没有找到相关文章

最新更新