Trước khi có ai hỏi, tôi không làm bất kỳ loại màn hình nào.Regex - Tìm nội dung của div theo id với div lồng nhau
Tôi đang cố gắng phân tích cú pháp chuỗi html để tìm một div có id nhất định. Tôi không thể cho cuộc sống của tôi có được điều này để làm việc. Biểu thức sau đây hoạt động trong một cá thể, nhưng không hoạt động trong một thể hiện khác. Tôi không chắc chắn nếu nó đã làm với các yếu tố phụ trong html hay không.
<div\s*?id=(\""|"|")content(\""|"|").*?>\s*?(?>(?! <div\s*?> | </div>) | <div\s*?>(?<DEPTH>) | </div>(?<-DEPTH>) | .?)*(?(DEPTH)(?!))</div>
Đó là tìm div đầu tiên có id đúng, nhưng sau đó đóng tại div đóng đầu tiên chứ không phải div liên quan.
<div id="firstdiv">begining content<div id="content">some other stuff
<div id="otherdiv">other stuff here</div>
more stuff
</div>
</div>
này nên mang lại
<div id="content">some other stuff
<div id="otherdiv">other stuff here</div>
more stuff
</div>
, nhưng đối với một số lý do, nó không phải là. Nó mang lại:
<div id="content">some other stuff
<div id="otherdiv">other stuff here</div>
Có ai có biểu hiện dễ dàng hơn để xử lý việc này không?
Để làm rõ, đây là trong .NET và tôi đang sử dụng từ khóa DEPTH. Bạn có thể tìm thêm chi tiết here.
upvoted - đây là câu hỏi tuyệt vời cho việc lập trình viên mới giới hạn những biểu thức thông thường có thể thực hiện. – Cybis
Có lẽ không phải trong tinh khiết Reg. Exp. nhưng nó chắc chắn có thể được thực hiện với .net. Xem câu trả lời của tôi. – pro3carp3