0

最も一般的な顔文字に一致する正規表現を作成しようとしていますが、リンク内にある場合はそうではありません。

  • 私の絵文字は:P =P :-P =-P :) :-) =) =-) :/ =/ :-/ =-/ :o =o :-o =-o :( :-( =( =-( :D :d :-D :-d =D =d =-D =-d

  • http://顔文字を一致させたくない:/

  • http://something.com?feature=playerまた、顔文字を発生させたくありません:p

  • 次のように複数の絵文字を続けて入力できるようにしたいので、スペースを区切り記号として使用することはできません。:):):)

ほとんど機能している現在の正規表現は次のとおりです。

(?<!http)([:=]{1}-?[\)\/\(ODP\]\[\\])|(;(-)?\))

問題は、すべてではなく、最初の絵文字の一致のみがリンクで省略されることです。

Grant Skinner の Regexrを使用してテストしています。

4

2 に答える 2

1

正規表現ですべてのURLを照合することは、それ自体が非常に複雑な作業です...おそらく、特に挑戦していると感じない限り、試す価値はありません。必要なものを解析する関数を作成する方がはるかに簡単です。ただし、URLが何であるかについての適切な概算は、/\w+([-+]\w+)*:[^\s]+/(その理由をよりよく理解するためのいくつかの例:svn+ssh://localhost、、 )ftp://site_name.ouch.auch/~directory/?paramter:=)#anch:o)rである可能性がありますhttps://Новости-Советского-Информ-Бюро.рф/С%25Новым%25Годом!。これらはすべて有効なURLです:)

したがって、私の戦術は、最初にURLである可能性があると思われるものを削除し(ユーザーがスマイリーを書くことで最終的に有効なURLを作成する可能性があるため、これはスマイリーをキャッチすることもあります)、残りを解析することです。

于 2012-11-03T11:13:43.323 に答える
0

お試しパターン

(?:(?<!http)(?<!http:):/(?![a-zA-Z0-9])|:-/|=-?/|[:=]-?[()]|[:=]-?[PDdo](?!$)(?![a-zA-Z0-9=]))
于 2012-11-02T22:00:25.567 に答える