从段落中提取热字符之间的多个字符串

时间:2016-06-16 00:30:36

标签: python python-3.x

现在我无法找到标题的方法,但我可以在代码中解释我的目的。

所以我可以收集用户评论并检查是否有这些" [[Keyword]]"改性剂。现在我想进一步扩展它以允许不止一个。

如果用户在行当前代码中输入多个修饰符,则会发生这种情况。

#comment in this case is "I want to [[find]] [[this]] [[Special]] word."
# c is the comment.
body = c.body
# Finds the hot word
result = re.search("\[\[(.*)\]\]", body, re.IGNORECASE)
print(result)

预期结果:

>>>find this Special

返回结果:

>>>find]] [[this]] [[Special

有什么方法可以把每个结果都放到某种数组中,所以我可以测量数组的长度,每个结果都对应一个数字

我希望它如何运作。

print(result[0] +'\n')
print(result[1] +'\n')
print(result[2] +'\n')
>>>find
>>>this
>>>Special

2 个答案:

答案 0 :(得分:1)

默认情况下,.* 贪婪。您希望它在非贪婪模式下匹配,以便尽可能少地匹配。您可以使用.*?代替.*来实现此目的。您还应该使用re.findall来获取所有匹配而不是re.search,这只会返回第一个匹配。

>>> re.findall(r"\[\[(.*?)\]\]", body, re.IGNORECASE)
['find', 'this', 'special']

答案 1 :(得分:0)

import re

text = 'comment in this case is "I want to [[find]] [[this]] [[Special]] word.'

result = re.findall("(?:\[\[(.*?)\]\])", text)

for term in result:
    print(term + "\n")