【发布时间】:2016-02-15 19:29:55
【问题描述】:
我试图在用户消息中找到“笑声”或类似的词,例如 hahaha、hihihi、hueheu。我目前的做法如下:
>>> substring_list = ['ha', 'ah', 'he', 'eh', 'hi', 'ih', 'ho', 'hu', 'hue']
>>> pattern_core = '|'.join(substring_list)
>>> self.regex_pattern = re.compile(r'\b[a-z]*(' + pattern_core + r'){2,}[a-z]*\b', re.IGNORECASE)
[a-z]* 允许在拼写错误方面留有余地(例如,ahhahah)。原则上,这工作得相当好。问题在于它需要在substring_list 需要更新以匹配新形式的“笑声”的意义上进行维护(例如,添加xi);各国之间的“笑声”似乎差异很大。
现在我想知道是否可以在不知道单个模式的情况下以某种方式根据重复模式(大小为 2-4)找到单词。例如,hurrhurr 包含 hurr 作为重复模式。在理想情况下,我可以 (a) 匹配 hurrhurr 并 (b) 识别核心模式 hurr。我不知道这是否可以使用正则表达式。
【问题讨论】:
-
您的 substring_list 当前匹配
hurrhurr,因为hu已经定义。 -
@l'L'l 注意到有一个
{2,}量词重复该组。 -
@Mariano:我应该注意什么?
-
@l'L'l 它不会匹配
hurrhurr因为hu不会连续重复 2 次以上 -
据我所知,接受的答案过于复杂,与不应该匹配的内容相匹配,并且没有提供所需的输出。