Tôi có vùng văn bản wysiwyg trong một ứng dụng web Java. Người dùng có thể nhập văn bản và tạo kiểu hoặc dán văn bản đã định dạng HTML.Liên kết văn bản với các cụm từ thông dụng trong Java
Điều tôi đang cố gắng thực hiện là liên kết văn bản. Điều này có nghĩa là chuyển đổi tất cả các URL có thể có trong văn bản thành "đối tác hoạt động" của họ, tức là thêm < a href = "..."> ... </a>.
Giải pháp này làm việc khi tất cả tôi có là văn bản đơn giản:
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
Nhưng vấn đề là khi có một số văn bản đã được định dạng, nghĩa là nó đã có < a href =". .. "> ... </a> thẻ.
Vì vậy, tôi đang tìm một cách nào đó để mô hình không phù hợp bất cứ khi nào nó tìm thấy văn bản giữa hai thẻ HTML (< a>). Tôi đã đọc điều này có thể đạt được với lookahead hoặc lookbehind nhưng tôi vẫn không thể làm cho nó hoạt động. Tôi chắc chắn rằng tôi đang làm điều đó sai vì regex vẫn phù hợp. Và có, tôi đã chơi xung quanh/gỡ lỗi các nhóm, thay đổi $ 0 thành $ 1, v.v.
Bất kỳ ý tưởng nào?
Tôi tự hỏi có cần thêm bao nhiêu câu hỏi về chủ đề này để mọi hoán vị của tựa đề đã tồn tại trên SO và mọi người bắt đầu sử dụng một trong các giải pháp đã – Tomalak
Tôi đã dành rất nhiều thời gian với cái này và đã làm một số nghiên cứu, nhưng vẫn không thể tìm ra. Ngăn xếp tràn đã giúp tôi tìm ra giải pháp và bây giờ cả cộng đồng có thể tận dụng những câu trả lời này. –
Tôi cũng thách thức bạn chỉ cho tôi một giải pháp cho vấn đề này đã có trên SO với một "tiêu đề bị" –