เพื่อให้ตรงกับคำใด ๆ คุณจะใช้รูปแบบ (\w+)
สมมติว่าคุณใช้ PCRE หรือสิ่งที่คล้ายกัน:
ภาพหน้าจอด้านบนที่นำมาจากตัวอย่างจริงนี้: http://regex101.com/r/cU5lC2
จับคู่คำทั้งหมดในบรรทัดคำสั่งกับ (\w+)
ฉันจะใช้phpsh interactive shellบนUbuntu 12.10เพื่อสาธิตเอ็นจิ้นPCRE regexผ่านวิธีการที่เรียกว่าpreg_match
เริ่ม phpsh ใส่เนื้อหาบางส่วนลงในตัวแปรจับคู่คำ
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
วิธี preg_match ที่ใช้เครื่องยนต์ PCRE ภายในภาษา PHP ในการวิเคราะห์ตัวแปร$content1
, $content2
และ$content3
ด้วย(\w)+
รูปแบบ
$ content1 และ $ content2 มีอย่างน้อยหนึ่งคำ $ content3 ไม่มี
จับคู่คำตามตัวอักษรบนบรรทัดคำสั่งกับ (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
ตัวแปร gun1 และ gun2 มีสตริงโผหรือผายลม gun4 ไม่ได้ อย่างไรก็ตามอาจเป็นปัญหาที่กำลังมองหาคำfart
ตรงกันfarty
ที่ตรงกันในการแก้ไขปัญหานี้ให้บังคับใช้ขอบเขตคำในนิพจน์ทั่วไป
จับคู่คำตามตัวอักษรบนบรรทัดคำสั่งกับขอบเขตของคำ
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
ดังนั้นจึงเป็นเช่นเดียวกับตัวอย่างก่อนหน้านี้ยกเว้นว่าคำว่าfart
มีขอบเขตของคำไม่อยู่ในเนื้อหา:\b
farty