Regex - ไม่มีอักขระบางตัว


274

ฉันต้องการ regex เพื่อให้ตรงกับที่ใดก็ได้ในประโยคที่ไม่มี <หรือ>

หาก <หรือ> อยู่ในสายอักขระนั้นจะต้องส่งกลับเท็จ

ฉันประสบความสำเร็จเพียงบางส่วนด้วยสิ่งนี้ แต่ถ้า <> ของฉันอยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุด:

(?!<|>).*$

ฉันใช้. Net หากนั่นสร้างความแตกต่าง

ขอบคุณสำหรับความช่วยเหลือ

คำตอบ:


436
^[^<>]+$

เครื่องหมายรูปหมวกในคลาสอักขระ ( [^) หมายถึงจับคู่อะไรก็ได้ แต่นั่นหมายความว่าจุดเริ่มต้นของสตริงจากนั้นอย่างน้อยหนึ่งอย่างยกเว้น<และ>จากนั้นก็เป็นจุดสิ้นสุดของสตริง


3
เครื่องหมายรูปหมวกตัวแรกหมายถึงอะไร นี่หมายความว่าไม่ใช่ทุกอย่างที่ไม่มีตัวอักษรเหล่านั้น ... ดังนั้นหมายถึงเฉพาะสตริงที่มีตัวอักษรเหล่านั้นหรือ
RobKohr

11
เครื่องหมายรูปหมวกตัวแรกหมายถึงจุดเริ่มต้นของสตริง ดอลลาร์หมายถึงจุดสิ้นสุดของสตริง
Ned Batchelder

2
@PhilipRego ระวังตัวอักษรพิเศษ: เชลล์ตีความบางตัว ดูเพื่อดูว่าตอนนี้คุณมีไฟล์ชื่อ '] + $' ในไดเรกทอรีของคุณหรือไม่ วาง regex ทั้งหมดไว้ในเครื่องหมายคำพูดเดี่ยวเพื่อให้มันทำงานได้
Ned Batchelder

คำตอบที่ดี! คุณสามารถเพิ่มคำอธิบายว่าทำไมถึงมี+เครื่องหมายรูปหมวกและตัวแรก?
Dr_Zaszuś

1
@ Dr_Zaszuś "+" หมายถึง "หนึ่งหรือมากกว่า" และ "^" หมายถึง "การเริ่มต้นของสตริง"
Ned Batchelder

59

ไปเลย:

^[^<>]*$

นี้จะทดสอบสำหรับสตริงที่ไม่มี<และไม่>

หากคุณต้องการทดสอบสตริงที่อาจมี<และ>ต้องมีสิ่งอื่นที่คุณควรใช้ด้วย

[^<>] (or ^.*[^<>].*$)

ไหน[<>]วิธีการใด ๆ<หรือ>และ[^<>]วิธีการใด ๆ ที่ไม่ได้เป็นของ<>หรือ

และแน่นอนที่บังคับใช้การเชื่อมโยง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.