2012-02-06 34 views
5

Tôi đang cố gắng biểu đạt chính quy để thay thế tất cả các liên kết ra khỏi chuỗi văn bản cho giá trị của liên kết.Cụm từ thông dụng cho thẻ liên kết với tất cả các thành viên

Một liên kết có thể trông như thế này:

<a href="http://whatever" id="an_id" rel="a_rel">the link</a> 
<a href="/absolute_url/whatever" id="an_id" rel="a_rel">the link</a> 

Tôi muốn có một biểu thức chính quy mà tôi nhận được: the link

Cảm ơn bạn,

Greetings.

+0

liên quan http://stackoverflow.com/questions/238891/regular-expressions-match-all-anchors-with-optional-attributes –

Trả lời

16
/<a[^>]*>([^<]+)<\/a>/g 

Đó là xa là hoàn hảo, nhưng bạn cần phải cung cấp thêm ví dụ về một trận đấu đúng là những gì và những gì không (ví dụ như những gì về khoảng trắng?)

+0

Hi Florian, những người khác Ví dụ: a link a link Lobo

+0

Dưới đây là một ví dụ về mô hình của tôi sử dụng ví dụ của bạn: http://regexr.com?2vu1u –

+0

Lưu ý: Điều này sẽ không làm việc cho elemen lồng nhau ts. Regex phải phân biệt chữ hoa chữ thường là cả hai đều hợp lệ. – Kshitij

-1

Cái gì đó như thế này là đủ

<a.*?>(.*)?</a> 
9
/<a[\s]+([^>]+)>((?:.(?!\<\/a\>))*.)<\/a>/g 

cái này sẽ phù hợp với bất kỳ <a ...>...</a> thẻ bao gồm cả những người phù hợp một cách chính xác có chứa một < hoặc bất kỳ đầy đủ thẻ như:

blah blah <a href="test.html">This line contains an HTML opening < bracket.</a> blah blah 
blah blah <a href="test.html">This line contains <strong>bold</strong> text.</a> blah blah 

Sẽ chụp:

<a href="test.html">This line contains an HTML opening < bracket.</a> 
  • với nhóm chụp:
    • href="test.html"
    • This line contains an HTML opening < bracket.

<a href="test.html">This line contains <strong>bold</strong> text.</a> 
  • với nhóm chụp:
    • href="test.html"
    • This line contains <strong>bold</strong> text.

Nó cũng bao gồm các nhóm chụp cho thẻ thuộc tính (như CLA ss = "", href = "", vv) và chứa (những gì nằm giữa thẻ) có thể bị xóa nếu bạn không cần chúng.

Nếu bạn muốn chụp nhiều dòng, hãy thêm "s" trước hoặc sau cờ "g" ở cuối. Lưu ý rằng cờ "s" có thể không hoạt động trong tất cả các hương vị của cụm từ thông dụng.

Capture dụ (không sử dụng "s" cờ - không được hỗ trợ bởi regexr chưa): http://regexr.com/39rsv

+1

Bạn có dấu gạch chéo không thoát ở gần cuối –

+0

Bắt tốt @BrianLeishman, cảm ơn! – Jim

+0

làm thế nào bạn sẽ sửa đổi điều này để trang trải 'bla bla yikes '? Đó là kẻ giết tôi ngay bây giờ. – Jerry

2

Chỉ cần một sự điều chỉnh nhỏ từ câu trả lời chấp nhận. Đây là regex chính xác: /<a[^>]*>([^<]+)<\/a>/g. Dấu gạch chéo phía trước (/) để đóng thẻ neo </a> không được thoát nên không có kết quả khớp nào được thực hiện.

-1

thử việc 100% này

(?i)<a(.*)(")>

Các vấn đề liên quan