ตัวดำเนินการนิพจน์ทั่วไปใดที่หมายถึง "ไม่" ตรงกับอักขระนี้


91

*, ?, +อักขระทั้งหมดหมายถึงตรงกับอักขระนี้ อักขระใดที่หมายความว่า 'ไม่' ตรงกับตัวนี้? ตัวอย่างจะช่วยได้


สำหรับวิธีแก้ปัญหาเกี่ยวกับการไม่จับคู่คำ - ดูที่นี่stackoverflow.com/questions/406230
null

คำตอบ:


92

คุณสามารถใช้คลาสอักขระลบเพื่อยกเว้นอักขระบางตัวเช่น[^abcde]จะจับคู่อะไรก็ได้ยกเว้นอักขระa, b, c, d, e

แทนที่จะระบุอักขระทั้งหมดตามตัวอักษรคุณสามารถใช้shorthandsภายในคลาสอักขระ: [\w](ตัวพิมพ์เล็ก) จะจับคู่ "อักขระคำ" (ตัวอักษรตัวเลขและขีดล่าง) [\W](ตัวพิมพ์ใหญ่) จะจับคู่อะไรก็ได้ยกเว้นอักขระคำ ในทำนองเดียวกัน[\d]จะจับคู่ 0-9 หลักในขณะที่[\D]จับคู่อะไรก็ได้ยกเว้น 0-9 หลักและอื่น ๆ

หากคุณใช้ PHP คุณสามารถใช้เวลาดูที่เอกสารชั้นเรียนตัวอักษร regex


82

มีสองวิธีในการพูดว่า "ไม่ตรงกัน" ได้แก่ ช่วงอักขระและค่าการมองหา / lookbehind เชิงลบที่มีความกว้างเป็นศูนย์

อดีต: ไม่ตรงกันa, b, cหรือ0:[^a-c0]

ตัวหลัง: จับคู่สตริงตัวอักษรสามตัวยกเว้นfooและbar:

(?!foo|bar).{3}

หรือ

.{3}(?<!foo|bar)

นอกจากนี้การแก้ไขสำหรับคุณ: *, ?และ+ไม่จริงตรงกับอะไร พวกเขาเป็นตัวดำเนินการซ้ำและติดตามตัวดำเนินการที่ตรงกันเสมอ ดังนั้นa+วิธีการที่ตรงกับหนึ่งหรือมากกว่าของa, [a-c0]+วิธีการตรงกับหนึ่งหรือมากกว่าของa, b, cหรือ0ในขณะที่[^a-c0]+จะตรงกับหนึ่งหรือมากกว่าหนึ่งของสิ่งใดที่ไม่ได้a, b, หรือc0


^((?!foo).)+$จับคู่บรรทัดใด ๆ ที่ไม่มี foo regex101.com/r/z6a65l/4
Levi Baguley

49

[^] (within [] ) เป็นการปฏิเสธในนิพจน์ทั่วไปในขณะที่^"จุดเริ่มต้นของสตริง"

[^a-z] จับคู่อักขระเดี่ยวใด ๆ ที่ไม่ได้มาจาก "a" ถึง "z"

^[a-z] หมายถึงสตริงเริ่มต้นด้วย "a" ถึง "z"

ข้อมูลอ้างอิง


9

^ ใช้ที่จุดเริ่มต้นของช่วงอักขระหรือการมองเชิงลบ / lookbehind การยืนยัน

>>> re.match('[^f]', 'foo')
>>> re.match('[^f]', 'bar')
<_sre.SRE_Match object at 0x7f8b102ad6b0>
>>> re.match('(?!foo)...', 'foo')
>>> re.match('(?!foo)...', 'bar')
<_sre.SRE_Match object at 0x7f8b0fe70780>

ต้องใช้?!ใน 2 ตัวอย่างสุดท้าย!ไหมคะหรือใช้เองได้? ที่?นั่นทำอะไร?
คลิก Upvote

Python ต้องการ?เพื่อที่จะบอกว่ามันเป็นส่วนขยาย เอนจิ้น regex อื่น ๆ อาจมีกฎของตัวเอง
Ignacio Vazquez-Abrams

@ คลิ๊ก: สวยได้มาตรฐาน regular-expressions.info/refadv.htmlนอกจากนี้คู่มือเครื่องยนต์ regexp ส่วนใหญ่ก็พูดในสิ่งเดียวกัน
Amadan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.