Làm cách nào tôi có thể thực hiện tìm kiếm NetBeans cho HTML bao gồm khoảng trắng lẻ?


0

Ví dụ: đối với mã có nhiều đoạn mã như thế này:

<section>
    <p><b>test</b></p>
</section>

Tôi muốn có thể tìm kiếm:

<section>
    <p><b>

Để tôi có thể thay thế nó bằng

<section>
    <h2>

Nhưng không thay thế cái khác <p><b>không có thẻ phần ngay trước nó.

Vì vậy, tôi không thể tìm kiếm <p><b>nhưng NetBeans sẽ không cho phép tôi dán vào các lựa chọn có khoảng trắng. Vì vậy, tôi cho rằng tôi cần thực hiện tìm kiếm regex cho một cái gì đó như:

<section>(any-white-space)<p><b>

Nhưng tôi không chắc chắn làm thế nào để làm điều đó. Bất kỳ trợ giúp sẽ được đánh giá cao.


Vì vậy, bạn đang hỏi làm thế nào để xây dựng một regex? Có TẤN thông tin ngoài kia để làm điều đó (ví dụ: normal-expressions.info ). Bạn đã thử những gì? Chính xác thì bạn đang bị mắc kẹt ở đâu?
Ƭᴇcʜιᴇ007

@ techie007 Tôi đã thử (theo nghĩa đen) 20 kết hợp tìm kiếm khác nhau cho các thẻ html chính xác với khoảng trắng ở giữa và không thể làm cho nó hoạt động.
Công dân

Tôi tò mò về cách bạn đã cố gắng khớp một khoảng trắng thay đổi. Có lẽ bạn có thể đưa ra một số mô hình bạn đã thử?
Jerry

Tôi có nghĩa là những mẫu Regex bạn đã thử? \snên bao gồm khoảng trắng, tab và dòng mới hoặc một nhóm như [\n\r\t ](nếu \skhông được hỗ trợ trong phiên bản Regex bạn đang sử dụng), chẳng hạn.
Ƭᴇcʜιᴇ007

1
Tôi không nghĩ rằng nó có vấn đề với \ s, tôi nghĩ rằng nó có một thời gian khó khăn để khớp với các thẻ cộng với \ s. Tôi có thể chạy một mình và tìm thấy whiteapce. Tôi đang đăng bài này lên superuser bởi vì tôi hy vọng sẽ tìm thấy ai đó có kinh nghiệm về regex trắng trên mạng, chứ không phải những người không biết câu trả lời.
Công dân

Câu trả lời:


1

Tôi đã thử nghiệm điều này trong jEdit (cũng được viết bằng Java như Netbeans nhưng hiện tại tôi không có quyền truy cập vào Netbeans). Hãy thử điều này cho mẫu regex:

(?<=<section>)(\s*)<p><b>([^<]+)</b></p>

với điều này được sử dụng như là sự thay thế:

$1<h2>$2</h2>

Mẫu biểu thức chính quy cho biết "khớp với một chuỗi có trước <section>và bắt đầu với bất kỳ khoảng trắng nào (được lưu trữ dưới dạng nhóm chụp 1) và sau đó chứa <p><b>ít nhất một ký tự không <(và lưu trữ các ký tự này làm nhóm bắt giữ 2 ) và kết thúc bằng </b></p>".

Mẫu thay thế chỉ nói "bắt đầu với khoảng trắng từ nhóm chụp 1, sau đó xuất ra <h2>các ký tự từ nhóm chụp 2 được tìm thấy bên trong <b>phần tử, sau đó xuất ra </h2>." Nắm bắt và xuất ra khoảng trắng có nghĩa là phần tử h2 mới của bạn sẽ bắt đầu với các dòng và tab mới giống như phần tử p, do đó, mọi định dạng đẹp sẽ không bị phá hỏng bởi thay đổi.

Xin lưu ý rằng regex không có cách nào biết được vị trí của nó so với cấu trúc DOM để không biết liệu có đúng khi sử dụng h1, h2, h3, h4, v.v. Nhưng nếu bạn chỉ cần <h2>thì hãy thử cái này.

(Trên thực tế, nếu bạn đang sử dụng HTML5 thì bạn có thể bắt đầu mỗi phần tử phần mới bằng một <h1>phần tử hoặc bất kỳ số bắt đầu nào khác trên thực tế và một trình duyệt tuân thủ được yêu cầu tự động xử lý các mức tiêu đề.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.