Reg表达式,从句子中的每个单词,得到一切,直到该单词的第四个斜线

时间:2016-12-22 12:05:01

标签: regex python-3.x

最佳

我想有一个reg表达式来转换下一个句子

heb/MD/B-VP/O/hebben ik/PRP/B-NP/O/ik zitten/MD/B-VP/O/zitten slapen/VB/I-VP/O/slapen ?/./O/O/?
of/CC/O/O/of heb/MD/B-VP/O/hebben ik/PRP/B-NP/O/ik het/PRP/I-NP/O/het samenwonen/NN/I-NP/O/samenwonen zo/RB/B-ADJP/O/zo lang/JJ/I-ADJP/O/lang uitgesteld/VBN/B-VP/O/uitstellen omdat/CC/O/O/omdat ik/PRP/B-NP/O/ik het/PRP/I-NP/O/het onbewust/JJ/B-ADJP/O/onbewust niet/RB/B-ADVP/O/niet wil/MD/B-VP/O/willen ?/./O/O/?
ben/MD/B-VP/O/zijn ik/PRP/B-NP/O/ik wel/RB/B-VP/O/wel gaan/MD/I-VP/O/gaan houden/VB/I-VP/O/houden van/IN/B-PP/O/van haar/MD/B-VP/O/haren ,/,/O/O/, maar/CC/O/O/maar niet/RB/B-ADVP/O/niet van/IN/B-PP/B-PNP/van haar/PRP$/B-NP/I-PNP/haar -/./O/O/- echte/JJ/B-ADJP/O/echt -/./O/O/- leven/NN/B-NP/O/leven ?/./O/O/?
http:&slash;&slash;www.google.be&slash;test/NNP/B-NP/O/http://www.google.be/test

进入,这个理想的结果:

hebben ik zitten slapen ? of hebben ik het samenwonen zo lang uitstellen omdat ik het onbewust niet willen ? zijn ik wel gaan houden van haren , maar niet/ van haar - echt - leven ? http://www.google.be/test

因此,我想选择“每个单词”(例如 heb / MD / B-VP / O / hebben ) - > ([^ \ s] +)并将所有字符( a-z&é“'(§234567etc”)直到第4个斜杠( heb / MD / B-VP / O / )。

以这种方式我可以用“”

替换那些匹配

亲切的问候

1 个答案:

答案 0 :(得分:1)

我使用([^\/]+\/){4}查找至少一个非\的4个片段,后跟\。然后在用空格分割输入后,用空字符串为每个单词重新命名该模式。

import re

input_str='heb/MD/B-VP/O/hebben ik/PRP/B-NP/O/ik zitten/MD/B-VP/O/zitten slapen/VB/I-VP/O/slapen ?/./O/O/? of/CC/O/O/of heb/MD/B-VP/O/hebben ik/PRP/B-NP/O/ik het/PRP/I-NP/O/het samenwonen/NN/I-NP/O/samenwonen zo/RB/B-ADJP/O/zo lang/JJ/I-ADJP/O/lang uitgesteld/VBN/B-VP/O/uitstellen omdat/CC/O/O/omdat ik/PRP/B-NP/O/ik het/PRP/I-NP/O/het onbewust/JJ/B-ADJP/O/onbewust niet/RB/B-ADVP/O/niet wil/MD/B-VP/O/willen ?/./O/O/? ben/MD/B-VP/O/zijn ik/PRP/B-NP/O/ik wel/RB/B-VP/O/wel gaan/MD/I-VP/O/gaan houden/VB/I-VP/O/houden van/IN/B-PP/O/van haar/MD/B-VP/O/haren ,/,/O/O/, maar/CC/O/O/maar niet/RB/B-ADVP/O/niet van/IN/B-PP/B-PNP/van haar/PRP$/B-NP/I-PNP/haar -/./O/O/- echte/JJ/B-ADJP/O/echt -/./O/O/- leven/NN/B-NP/O/leven ?/./O/O/? http:&slash;&slash;www.google.be&slash;test/NNP/B-NP/O/http://www.google.be/test'

regex=re.compile(r'([^\/]+\/){4}')
s=[]
for word in input_str.split():
  s.append(regex.sub('',word))
print(' '.join(s))