前提・実現したいこと
Javaで正規表現を使って、<a href=...></a>のような<a>タグと、
文字としての「<」「>」とを判別したいです。
そのようにできる正規表現があれば教えていただきたいです。
具体的に言うと、文字としての「<」「>」だけエスケープ処理を
行い、<a>タグの「<」「>」はタグとして機能させるようにしたいです。
該当のソースコード
Java
1 /** 2 * 抽出した文字列内のURLを、正規表現を使用し、 3 * リンク(a href=...)に変換する。 4 * お知らせ機能にのみ使用 5 * @param str 指定の文字列。 6 * @return リンクに変換された文字列。 7 */ 8 public static String convURLLink(String str) { 9 String linkstr = ""; 10 try { 11 str = 12 linkstr = str.replaceAll(("(http://|https://|ftp://){1}[\w\.\-/:\#\!\?\@\,\=\&\;\%\~\+)]+"), 13 "<a href=\"$0\"target=\"_new\">$0</a>") ; 14 15 linkstr = linkstr.replaceAll(("[^<a(?: .+?)?>.*?<\a>]+"), 16 EPotalEncode.HtmlEncode("$0")); 17 System.out.println(linkstr); 18 return linkstr; 19 20 } catch (Exception ex) { 21 log.warn("Exception caught:", ex); 22 return getErrorProperty("util.error.001") + ex; //エラー 23 } 24 } 25
試したこと
渡ってきた文字列を正規表現を用いて該当箇所をリンクに変換(置き換え)。
その後、その置き換えをした文字列を、正規表現で文字の「<」「>」
を抽出、「HtmlEncode」という文字のエスケープを行うメソッドを使って、
エスケープを行い、タグとして機能させないようにする。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/02 06:52