regex คืออะไรเพื่อตรวจสอบว่าสตริงมีคำบางคำ (เช่น 'Test') หรือไม่? ฉันได้ทำ googling ไปบ้างแล้ว แต่ไม่สามารถหาตัวอย่างที่ตรงไปตรงมาของ regex ได้ สิ่งนี้มีไว้สำหรับสร้างสคริปต์ แต่ไม่มีผลกับภาษาโปรแกรมใด ๆ
regex คืออะไรเพื่อตรวจสอบว่าสตริงมีคำบางคำ (เช่น 'Test') หรือไม่? ฉันได้ทำ googling ไปบ้างแล้ว แต่ไม่สามารถหาตัวอย่างที่ตรงไปตรงมาของ regex ได้ สิ่งนี้มีไว้สำหรับสร้างสคริปต์ แต่ไม่มีผลกับภาษาโปรแกรมใด ๆ
คำตอบ:
สมมติว่ารสชาติ regex แบบ PCRE ปกติ:
หากคุณต้องการตรวจสอบว่าเป็นคำเดียวแบบเต็มก็จะ\bTest\b
มีแฟล็กที่เหมาะสมสำหรับการไม่ไวต่อตัวพิมพ์หากต้องการและตัวคั่นสำหรับภาษาโปรแกรมของคุณ \b
หมายถึง "ขอบเขตคำ" นั่นคือจุดระหว่างอักขระที่สามารถพิจารณาคำว่าเริ่มต้นหรือสิ้นสุดได้ ตัวอย่างเช่นเนื่องจากมีการใช้ช่องว่างเพื่อแยกคำจึงมีขอบเขตของคำที่ด้านใดด้านหนึ่งของช่องว่าง
หากคุณต้องการตรวจสอบว่าเป็นส่วนหนึ่งของคำให้Test
ใช้แฟล็กที่เหมาะสมอีกครั้งสำหรับกรณีไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ โปรดทราบว่าโดยปกติแล้วเมธอด "สตริงย่อย" เฉพาะมักจะเร็วกว่าในกรณีนี้เนื่องจากจะลบค่าใช้จ่ายในการแยกวิเคราะห์นิพจน์ทั่วไป
อย่ายึดรูปแบบของคุณ:
/Test/
regex ข้างต้นจะตรวจสอบว่าพบสตริงตัวอักษร "Test" อยู่ที่ไหนสักแห่งในนั้น
ฉันมาช้าไปสองสามปี แต่ทำไมไม่เป็นแบบนี้ล่ะ?
[Tt][Ee][Ss][Tt]
[Aa]
รูปแบบสำหรับทุกตัวอักษรและมันจะค่อนข้างน่าเกลียดอย่างรวดเร็ว
\b
หมายถึง" ขอบเขตคำ "นั่นคือสิ่งที่คั่นสองคำ (เช่นช่องว่าง)"\b
ไม่ตรงกับช่องว่าง เป็นการยืนยันที่จับคู่ระหว่างอักขระ (หรือที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดในกรณีส่วนใหญ่)