Chuyển đến nội dung chính
Mô-đun 6 · Bài học 3 trong tổng số 423/32 trong khóa học~12 min
Bài học theo mô-đun (3/4)

Nhìn phía sau: `(?<=...)` `(?<!...)`

Cái nhìn phía sau là hình ảnh phản chiếu của cái nhìn phía trước: chúng nhìn trước vị trí hiện tại, vẫn có chiều rộng bằng 0.

  • (?<=...) -- cái nhìn tích cực về phía sau: mẫu phải có trước.
  • (?<!...) -- cái nhìn tiêu cực: mẫu KHÔNG được đặt trước.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

$ không khớp nhưng hoạt động như một điều kiện: chỉ có các chữ số trước so khớp với ký hiệu đô la.

Cái nhìn tiêu cực phía sau

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) yêu cầu trước các chữ số KHÔNG có ký tự từ: abc123 bị loại trừ (trước 123 có c, \w), 456 kết quả phù hợp (trước có một khoảng trống).

Sự khác biệt chính so với nhóm không chụp

Code
\\$\\d+         matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+    matches "100":  the match contains ONLY the digits.

Nếu bạn cần trích xuất giá trị "sạch" mà không có tiền tố, lookbehind là sự lựa chọn đúng đắn

Khả năng tương thích phía sau trong JavaScript

(?<=...) dương và (?<!...) âm, kiểm tra phía sau những gì đứng trước vị trí hiện tại. Trong JavaScript, chúng được hỗ trợ bắt đầu từ ES2018; trong các trình duyệt cũ hơn hoặc các công cụ Node.js cũ, chúng có thể gây ra lỗi biên dịch cú pháp.

Hãy thử nó

tập thể dục#regex.m6.l3.e1
Nỗ lực: 0Đang tải…

Chỉ trích xuất số tiền (không có dấu $) từ giá trong văn bản.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Di chuyển \\$ bên trong một cái nhìn tích cực (?<=\\$): một điều kiện vị trí, không phải là một phần của trận đấu.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#regex.m6.l3.e2
Nỗ lực: 0Đang tải…

Tìm mọi chuỗi chữ số KHÔNG có chữ cái hoặc chữ số đứng trước (tức là các số 'bị cô lập', không phải các phần của mã như `abc123`).

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng giao diện phủ định (?<!\\w) để loại trừ khi có một chữ cái hoặc chữ số trước đó.

Giải pháp khả dụng sau 3 lần thử

Thử thách bổ sung

tập thể dục#regex.m6.l3.e3
Nỗ lực: 0Đang tải…

Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Di chuyển dấu trừ - bên trong hình ảnh tích cực phía sau (?<=-).

Giải pháp khả dụng sau 3 lần thử