文字列を正規表現と一致させるのに問題があります (私は正規表現の経験がありません)。各単語とタグの後にスラッシュを含む文字列があります。例:
led/O by/O Timothy/PERSON R./PERSON Geithner/PERSON ,/O the/O president/O of/O the/O New/ORGANIZATION
これらの文字列では、 の前にあるすべての文字列にのみ関心があります/PERSON
。私が思いついた正規表現パターンは次のとおりです。
(\w)*\/PERSON
そして私のコード:
match = re.findall(r'(\w)*\/PERSON', string)
基本的に、前に来る単語に一致します/PERSON
。出力:
>>> reg
['Timothy', '', 'Geithner']
私の問題は、 のように空の文字列に一致する 2 番目の一致、R./PERSON
ドットが単語文字ではないことです。正規表現を次のように変更しました。
match = re.findall(r'(\w|.*?)\/PERSON', string)
しかし、今の試合は次のとおりです。
['led/O by/O Timothy', ' R.', ' Geithner']
led/O by/O
一致するだけでなく、最初の /PERSON の前にあるすべてのものを含んでいますTimothy
。略語としてピリオドを含めながら、誰かがこのマッチングを行う方法について私を助けてくれませんか? または、少なくとも、空の文字列が一致していませんか?
ありがとう、