「はははは」や「ロロロロル」などの笑い声を文字列から検出しようとしています。
現在、次の正規表現を使用しています。
^((.*?)|)(\b[ha]|\b[lo])(.*?)$
ただし、これは私の目的では機能しません。これは機能しますが、l、o、h、a の文字を含む任意の単語を検索するだけなので、「kill」などの笑いとはまったく関係のない単語にも一致します。
文字列内の笑い声 (「ハハハ」や「ロロロル」など) を検出するにはどうすればよいですか?
「はははは」や「ロロロロル」などの笑い声を文字列から検出しようとしています。
現在、次の正規表現を使用しています。
^((.*?)|)(\b[ha]|\b[lo])(.*?)$
ただし、これは私の目的では機能しません。これは機能しますが、l、o、h、a の文字を含む任意の単語を検索するだけなので、「kill」などの笑いとはまったく関係のない単語にも一致します。
文字列内の笑い声 (「ハハハ」や「ロロロル」など) を検出するにはどうすればよいですか?
このパターンで試してください:
\b(?:a*(?:ha)+h?|(?:l+o+)+l+)\b
または、正規表現フレーバーがアトミック グループと所有量指定子をサポートしている場合:
\b(?>a*+(?:ha)++h?|(?:l+o+)++l+)\b
投稿された解決策は、あなたがやりたいことに対して非常に複雑かもしれないので、簡単にするために: 「笑い言葉」としてカウントするのが , などと , , などだけha
のhaha
場合lol
、lolol
次lololol
の正規表現は次のようになります。十分な:
\b(ha)+|l(ol)+\b
\b
これは、使用しているように見える単語境界を表す正規表現の方言を想定しています。
\b(a*ha+h[ha]*|o?l+o+l+[ol]*)\b
一致:
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
Python では、次のようにしてみました。
import re
re.sub(r"\b(?:a{0,2}h{1,2}a{0,2}){2,}h?\b", "<laugh>", "hahahahha! I love laughing")
>> <laugh>! I love laughing