如何在python中使用regex从字符串中提取单词模式

2024-09-24 04:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从包含特定字符(/IN)的字符串中提取单词,直到提取到其他特定字符(/NNP)。我的代码到目前为止(仍然不起作用):

import re

sentence = "Entah/RB kenapa/NN ini/DT bayik/NN suka/VBI banget/JJ :/: )/CP :/: )/CP :/: )/CP berenang/VBI di/IN Jln/NN Terusan/NNP Borobudur/NNP dan/NN di/IN Jalan/NN Perempatan/ADJ Malioboro/NNP"

tes = re.findall(r'((?:\S+/IN\s\w+/NNP\s*)+)', sentence)
print(tes)

所以sentence包含我想提取的单词di/IN Jln/NN Terusan/NNP Borobudur/NNP和{}。预期结果:

^{pr2}$

这样做最好的方法是什么?谢谢。在


Tags: 字符串inrenn字符单词tescp
1条回答
网友
1楼 · 发布于 2024-09-24 04:30:30

使用

r'\S+/IN\b(?:(?!\S+/IN\b).)+\S+/NNP\b'

参见regex demo

详细信息

  • \S+-1+个非空白符号
  • /IN\b-a/IN子串作为一个整词
  • (?:(?!\S+/IN\b).)+-除换行符以外的任何1+字符,它们与\S+/IN\b模式序列不匹配(也可以使用re.DOTALL来匹配换行符)
  • \S+/NNP\b-1+非空白,/NNP作为整个单词(因为\b是一个单词边界)

相关问题 更多 >