我在Java webapp中有一个所见即所得的文本区域.用户可以输入文本并对其进行样式设置或粘贴一些已经HTML格式的文本.
我想要做的是链接文本.这意味着,将文本中所有可能的URL转换为"工作对应",即添加 ... 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("$0"); // group 0 is the whole expression
但问题是当有一些已经格式化的文本时,即它已经有 ... a>标签.
因此,当我在两个HTML标记()之间找到文本时,我正在寻找一种不匹配的模式.我已阅读本可以实现前瞻或回顾后,但我仍然不能使它发挥作用.我确信我做错了因为正则表达式仍然匹配.是的,我一直在玩/调试组,将$ 0改为$ 1等.
有任何想法吗?
你很亲密 您可以像这样使用"负面后观":
(?以href开头的所有结果都将被忽略.