システムを使用して @twitter のような名前を取得していますが、次の正規表現はほぼ完璧です。
(?<![^\s<>])@([^\s<>]+)
私が見つけた問題は、名前の後に句読点がある場合です
たとえば、次のようになります。
- Hey @mark ===> は @mark に一致します (これが私たちが望むものです)
- @マークさん。===> は @mark に一致します。
- Hey @mark, you're nice ===> @mark に一致
- やあ@マーク!!!! ===> が @mark に一致するとは思いもしませんでした!!!!
明らかに、句読点ではなく、ユーザー名のみを一致させたいと考えています。警告は、一部のユーザー名にはユーザー名内にこれらのピリオドがあることです。たとえば、
たとえば、これらはすべて正当なユーザー名です
マークス
mark@gmail.com
mark_markus@gmail.com
EDIT 後読みを使用しています。上記のユーザー名の前に @ を付けて使用すると、それらは一致するはずですが、前に @ を付けないと、電子メール アドレスは実際には一致しません。@mark_markus@gmail.com は mark_markus@gmail.com と一致するはずですが、誰かが普通の古い mark_markus@gmail.com と入力した場合、gmail.com を一致させたくありません。
使用できるさまざまな句読点を考慮して正規表現を変更する方法についてのアイデアはありますか?