如何检测字符串中的笑话?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测字符串中的笑话?相关的知识,希望对你有一定的参考价值。

我试图在字符串中检测出像“哈哈哈哈”和“洛丽奥尔”这样的笑话。

目前我正在使用以下正则表达式:

^((.*?)|)([ha]|[lo])(.*?)$

但是,这不适用于我的目的。它有效,但它也匹配与笑声完全无关的词,例如'kill',因为它只是寻找包含字母l,o,h,a的任何单词。

如何在字符串中检测笑话(如“hahaha”或“lololol”)?

答案

尝试这种模式:

(?:a*(?:ha)+h?|(?:l+o+)+l+)

或者更好,如果你的正则表达式支持原子组和占有量词:

(?>a*+(?:ha)++h?|(?:l+o+)++l+)
另一答案

为了简单起见,因为发布的解决方案对于你想要做的事情可能过于复杂:如果你唯一被认为是“笑话”的话是hahaha等等和lollolollololol等,那么以下正则表达式就足够了:

(ha)+|l(ol)+

这假设一个正则表达式方言,其中代表一个单词边界,你似乎正在使用它。

另一答案

(a*ha+h[ha]*|o?l+o+l+[ol]*)

火柴:

hahahah
haha
lol
loll
loool
looooool
lolololol
lolololololo
ahaha
aaaahahahahahaha

不匹配:

looo
oool
oooo
llll
ha
l
o
lo
ol
ah
aah
aha
kill
lala
haunt
hauha
louol

以上是关于如何检测字符串中的笑话?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pygments 检测代码片段的编程语言

如何检测 SUSE Linux 系统中的音频可用性

Android:使用Tab检测单个片段viewpager

如何在导航抽屉活动模板中的片段之间传递字符串变量

笑话:如何正确模拟节点模块?

Python代码阅读(第13篇):检测列表中的元素是否都一样