以下是带有词性标记的句子:所有/ DT动物/ NNS是/ VBP等于/ JJ,/, 但是/ CC一些/ DT动物/ NNS比/ IN其他/ NNS多/ VBP / RBR相等/ JJ。
如何编写仅与句子中每个单词/ pos-tag的单词匹配的正则表达式。
text="""All/DT animals/NNS are/VBP equal/JJ ,/, but/CC some/DT animals/NNS
are/VBP more/RBR equal/JJ than/IN others/NNS ./."""
tokens=nltk.word_tokenize(text)
pattern="([A-Za-z]+)|[A-Za-z]"
print("Upper case words:")
for tok in tokens:
if re.search(pattern, tok) is not None:
print("'{}'".format(tok))
答案 0 :(得分:2)
使用re.findall
import re
print (re.findall(r'([a-zA-Z]+)/[a-zA-Z]+',text))
#['All', 'animals', 'are', 'equal', 'but', 'some', 'animals', 'are', 'more', 'equal', 'than', 'others']
答案 1 :(得分:0)
您可以使用以下正则表达式:
(\S+)\/\S+\s?
说明:
(\S+)
是一个与任何非空白字符匹配的捕获组
/
与字符/
匹配
\S+
匹配非空格字符,但这次未被捕获
\s?
末尾的可选空间
Here's a link测试正则表达式并获得说明
@Transhuman建议使用re.findall
来获取所有匹配项:
import re
print (re.findall(r'(\S+)/\S+\s?',text))
您可以测试python代码here: