Để đối sánh toàn bộ từ, bạn sẽ sử dụng mẫu (\w+)
Giả sử bạn đang sử dụng PCRE hoặc thứ gì đó tương tự:
Ảnh chụp màn hình phía trên được lấy từ ví dụ trực tiếp này: http://regex101.com/r/cU5lC2
Đối sánh toàn bộ từ trên dòng lệnh với (\w+)
Tôi sẽ sử dụng trình bao tương tác phpsh trên Ubuntu 12.10 để trình diễn công cụ regex PCRE thông qua phương pháp gọi là preg_match
Bắt đầu phpsh, đặt một số nội dung vào một biến, khớp trên word.
el@apollo:~/foo$ phpsh
php> $content1 = 'badger'
php> $content2 = '1234'
php> $content3 = '$%^&'
php> echo preg_match('(\w+)', $content1);
1
php> echo preg_match('(\w+)', $content2);
1
php> echo preg_match('(\w+)', $content3);
0
Phương pháp preg_match sử dụng động cơ PCRE trong ngôn ngữ PHP để phân tích biến: $content1
, $content2
và $content3
với các (\w)+
mô hình.
$ content1 và $ content2 chứa ít nhất một từ, $ content3 thì không.
Ghép một số từ theo nghĩa đen trên dòng lệnh với (dart|fart)
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(dart|fart)', $gun1);
1
php> echo preg_match('(dart|fart)', $gun2);
1
php> echo preg_match('(dart|fart)', $gun3);
1
php> echo preg_match('(dart|fart)', $gun4);
0
biến gun1 và gun2 chứa chuỗi phi tiêu hoặc xì hơi. gun4 không. Tuy nhiên, nó có thể là một vấn đề khi tìm kiếm từfart
phù hợp farty
. Để khắc phục điều này, hãy thực thi ranh giới từ trong regex.
Ghép các từ theo nghĩa đen trên dòng lệnh với các ranh giới từ.
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(\bdart\b|\bfart\b)', $gun1);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun2);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun3);
0
php> echo preg_match('(\bdart\b|\bfart\b)', $gun4);
0
Vì vậy, nó giống như các ví dụ trước ngoại trừ các từ fart
với một \b
ranh giới từ không tồn tại trong nội dung: farty
.