私は、Java Webアプリケーションにwysiwygテキスト領域を持っています。ユーザーはテキストを入力してスタイルを設定したり、HTML形式のテキストを貼り付けることができます。テキストをJavaの正規表現にリンクする
私がしようとしているのはです。のテキストをリンクしています。つまり、テキスト内のすべての可能なURLを「作業相手」に変換します。すなわち、< a href = "..."> ... </a>を追加します。私が持っているすべてはプレーンテキストであるときを働く
このソリューション:
String r = "http(s)?://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?";
Pattern pattern = Pattern.compile(r, Pattern.DOTALL | Pattern.UNIX_LINES | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(comment);
comment = matcher.replaceAll("<a href=\"$0\">$0</a>"); // group 0 is the whole expression
しかし、いくつかすでにフォーマットされたテキストがある場合に問題があるが、「=それはすでにが<のhrefを持っていることすなわち。 .. "> ... </a>タグ。
だから私はそれが2個のHTMLタグ(<>)の間のテキストを見つけるたびと一致しないパターンのためにいくつかの方法を探しています。私はこれがlookaheadまたはlookbehindで達成できると読んだが、私はまだそれを動作させることはできません。私は正規表現がまだ一致するので、間違っていると確信しています。そして、はい、私は周りを遊んでいた/デバッググループ、$ 0に$ 1などを変更します。
アイデア?
タイトルのすべての並べ替えがすでにSO上に存在し、人々が今までにあったソリューションの1つを使い始めるためには、 – Tomalak
私はこの1つで多大な時間を費やして研究しましたが、それでもまだ分かりませんでした。スタックオーバーフローが解決策を見つけるのに役立ち、コミュニティ全体がこれらの答えを利用できるようになりました。 –
私はこの問題の解決方法を1つ表示するように挑戦しています。すでに「並べ替えられたタイトル」となっています。 –