คำถามติดแท็ก regex

นิพจน์ทั่วไปจัดเตรียมภาษาที่ประกาศเพื่อจับคู่รูปแบบภายในสตริง โดยทั่วไปจะใช้สำหรับการตรวจสอบความถูกต้องสตริงการแยกวิเคราะห์และการแปลง เนื่องจากนิพจน์ทั่วไปนั้นไม่ได้มาตรฐานอย่างสมบูรณ์คำถามทั้งหมดที่มีแท็กนี้จึงควรมีแท็กที่ระบุภาษาการเขียนโปรแกรมหรือเครื่องมือที่เกี่ยวข้อง หมายเหตุ: การขอ HTML, JSON และอื่น ๆ regex มีแนวโน้มที่จะพบกับปฏิกิริยาเชิงลบ หากมีการแยกวิเคราะห์มันใช้ที่แทน


30
นิพจน์ปกติเพื่อจับคู่บรรทัดที่ไม่มีคำ
ฉันรู้ว่าเป็นไปได้ที่จะจับคู่คำแล้วย้อนกลับการแข่งขันโดยใช้เครื่องมืออื่น ๆ (เช่นgrep -v) อย่างไรก็ตามเป็นไปได้หรือไม่ที่จะจับคู่บรรทัดที่ไม่มีคำเฉพาะเช่นการhedeใช้นิพจน์ทั่วไป? การป้อนข้อมูล: hoho hihi haha hede รหัส: grep "<Regex for 'doesn't contain hede'>" input ผลลัพธ์ที่ต้องการ: hoho hihi haha

30
วิธีการตรวจสอบที่อยู่อีเมลโดยใช้การแสดงออกปกติ?
ในช่วงหลายปีที่ผ่านมาฉันได้พัฒนานิพจน์ปกติที่ตรวจสอบความถูกต้องของที่อยู่อีเมล MOST อย่างถูกต้องโดยสมมติว่าพวกเขาไม่ได้ใช้ที่อยู่ IP เป็นส่วนหนึ่งของเซิร์ฟเวอร์ ฉันใช้มันในโปรแกรม PHP หลายโปรแกรมและทำงานได้เกือบตลอดเวลา อย่างไรก็ตามบางครั้งฉันได้รับการติดต่อจากบุคคลที่มีปัญหากับเว็บไซต์ที่ใช้งานและฉันต้องทำการปรับเปลี่ยน (ล่าสุดฉันรู้ว่าฉันไม่อนุญาต TLD 4 ตัวอักษร) นิพจน์ทั่วไปที่ดีที่สุดที่คุณมีหรือเคยเห็นเพื่อยืนยันอีเมลคืออะไร ฉันได้เห็นวิธีแก้ปัญหาหลายอย่างที่ใช้ฟังก์ชั่นที่ใช้นิพจน์สั้น ๆ หลายอัน แต่ฉันอยากได้นิพจน์ที่ซับซ้อนยาว ๆ ในฟังก์ชั่นที่เรียบง่ายแทนที่จะใช้นิพจน์สั้น ๆ หลายอันในฟังก์ชั่นที่ซับซ้อนกว่า


30
RegEx จับคู่แท็กเปิดยกเว้นแท็ก XHTML ที่มีในตัว
ล็อคแล้ว ความคิดเห็นเกี่ยวกับคำถามนี้ถูกปิดใช้งาน แต่ยังคงยอมรับคำตอบใหม่และการโต้ตอบอื่น ๆ เรียนรู้เพิ่มเติม ฉันต้องการจับคู่แท็กเปิดทั้งหมดเหล่านี้: <p> <a href="foo"> แต่ไม่ใช่สิ่งเหล่านี้: <br /> <hr class="foo" /> ฉันมากับสิ่งนี้และต้องการให้แน่ใจว่าฉันทำถูกแล้ว a-zฉันเป็นเพียงการจับ <([a-z]+) *[^/]*?> ฉันเชื่อว่ามันพูดว่า: ค้นหาน้อยกว่าแล้ว ค้นหา (และจับ) az อย่างน้อยหนึ่งครั้ง ค้นหาช่องว่างเป็นศูนย์หรือมากกว่านั้น ค้นหาตัวละครใด ๆ ที่เป็นศูนย์หรือมากกว่าครั้งโลภยกเว้น/จากนั้น ค้นหามากกว่า ฉันมีสิทธินั้นไหม และที่สำคัญคุณคิดว่าอย่างไร
1473 html  regex  xhtml 

20
คุณจะใช้ตัวแปรในการแสดงออกปกติได้อย่างไร
ฉันต้องการสร้างString.replaceAll()วิธีการใน JavaScript และฉันคิดว่าการใช้ regex จะเป็นวิธีที่สั้นที่สุดที่จะทำ อย่างไรก็ตามฉันไม่สามารถหาวิธีส่งตัวแปรไปยัง regex ได้ ฉันจะทำอย่างนี้แล้วซึ่งจะแทนที่ทุกกรณีของกับ"B""A" "ABABAB".replace(/B/g, "A"); แต่ฉันต้องการทำสิ่งนี้: String.prototype.replaceAll = function(replaceThis, withThis) { this.replace(/replaceThis/g, withThis); }; แต่แน่นอนว่าสิ่งนี้จะแทนที่ข้อความเท่านั้น"replaceThis"... ดังนั้นฉันจะส่งตัวแปรนี้ไปยังสตริง regex ของฉันได้อย่างไร
1378 javascript  regex 

21
คุณเข้าถึงกลุ่มที่ตรงกันในนิพจน์ปกติของ JavaScript ได้อย่างไร
ฉันต้องการจับคู่ส่วนของสตริงโดยใช้นิพจน์ทั่วไปจากนั้นเข้าถึงสตริงย่อยที่วงเล็บ: var myString = "something format_abc"; // I want "abc" var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString); console.log(arr); // Prints: [" format_abc", "abc"] .. so far so good. console.log(arr[1]); // Prints: undefined (???) console.log(arr[0]); // Prints: format_undefined (!!!) ผมทำอะไรผิดหรือเปล่า? ฉันพบว่าไม่มีอะไรผิดปกติกับรหัสนิพจน์ทั่วไปด้านบน: สตริงจริงที่ฉันทดสอบเทียบคือ: "date format_%A" การรายงานว่า "% A" ไม่ได้กำหนดดูเหมือนว่าจะเป็นพฤติกรรมที่แปลกมาก แต่ไม่เกี่ยวข้องโดยตรงกับคำถามนี้ดังนั้นฉันจึงเปิดขึ้นมาใหม่ทำไมสตริงย่อยที่ตรงกันจึงกลับมา "ไม่ได้กำหนด" ใน JavaScript . ปัญหาคือconsole.logใช้พารามิเตอร์ของมันเช่นprintfคำสั่งและเนื่องจากสตริงที่ฉันบันทึก …
1368 javascript  regex 

5
\ d มีประสิทธิภาพน้อยกว่า [0-9]
ผมได้แสดงความคิดเห็นเมื่อวานนี้ในคำตอบที่มีคนใช้[0123456789]ในการแสดงออกปกติมากกว่าหรือ[0-9] \dฉันบอกว่ามันอาจจะมีประสิทธิภาพมากกว่าในการใช้ตัวระบุช่วงหรือตัวเลขมากกว่าชุดอักขระ ฉันตัดสินใจที่จะทดสอบในวันนี้และพบกับความประหลาดใจของฉันที่ (ใน C # regex engine อย่างน้อย) \dดูเหมือนว่าจะมีประสิทธิภาพน้อยกว่าอีกสองอันที่ดูเหมือนจะไม่แตกต่างกันมากนัก นี่คือผลการทดสอบของฉันมากกว่า 10,000 สายสุ่ม 1,000 ตัวอักษรแบบสุ่มกับ 5077 จริงประกอบด้วยตัวเลข: Regular expression \d took 00:00:00.2141226 result: 5077/10000 Regular expression [0-9] took 00:00:00.1357972 result: 5077/10000 63.42 % of first Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000 64.87 % of first มันเป็นเรื่องประหลาดใจสำหรับฉันด้วยเหตุผลสองประการ: ฉันคิดว่าช่วงจะใช้งานได้อย่างมีประสิทธิภาพมากกว่าชุด ผมไม่เข้าใจว่าทำไมเลวร้ายยิ่งกว่า\d [0-9]มี\dมากกว่าแค่การจดชวเลข[0-9]หรือไม่? …
1247 c#  regex  performance 


3
การจับคู่เชิงลบโดยใช้ grep (เส้นจับคู่ที่ไม่มี foo)
ฉันพยายามหาไวยากรณ์สำหรับคำสั่งนี้: grep ! error_log | find /home/foo/public_html/ -mmin -60 หรือ: grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60 error_logฉันต้องการที่จะเห็นไฟล์ทั้งหมดที่ได้รับการแก้ไขยกเว้นสำหรับผู้ที่ตั้งชื่อ ฉันเคยอ่านเกี่ยวกับที่นี่แต่พบnotรูปแบบ -regex หนึ่งรูป
990 regex  grep 

30
วิธีตรวจสอบหมายเลขโทรศัพท์โดยใช้ regex
ฉันพยายามรวบรวม regex ที่ครอบคลุมเพื่อตรวจสอบหมายเลขโทรศัพท์ เป็นการดีที่มันจะจัดการรูปแบบต่างประเทศ แต่จะต้องจัดการกับรูปแบบของสหรัฐอเมริการวมถึงต่อไปนี้: 1-234-567-8901 1-234-567-8901 x1234 1-234-567-8901 ext1234 1 (234) 567-8901 1.234.567.8901 1/234/567/8901 12345678901 ฉันจะตอบด้วยความพยายามในปัจจุบันของฉัน แต่ฉันหวังว่าจะมีใครบางคนมีสิ่งที่ดีกว่าและ / หรือสวยงามกว่า

30
นิพจน์ทั่วไปที่ดีที่สุดในการตรวจสอบว่าสตริงเป็น URL ที่ถูกต้องคืออะไร
ฉันจะตรวจสอบว่าสตริงที่กำหนดเป็นที่อยู่ URL ที่ถูกต้องได้อย่างไร? ความรู้ของฉันเกี่ยวกับนิพจน์ทั่วไปนั้นเป็นพื้นฐานและไม่อนุญาตให้ฉันเลือกจากนิพจน์ทั่วไปนับร้อยที่ฉันได้เห็นบนเว็บแล้ว

11
ตรวจสอบว่าสตริงตรงกับ regex ใน JS
ฉันต้องการใช้ JavaScript (สามารถกับ jQuery) เพื่อทำการตรวจสอบฝั่งไคลเอ็นต์เพื่อตรวจสอบว่าสตริงตรงกับ regex หรือไม่: ^([a-z0-9]{5,})$ เป็นการดีที่มันจะเป็นนิพจน์ที่ส่งกลับจริงหรือเท็จ ฉันเป็นมือใหม่จาวาสคริปต์match()ทำในสิ่งที่ฉันต้องการ? ดูเหมือนว่าจะตรวจสอบว่าส่วนหนึ่งของสตริงตรงกับ regex ไม่ใช่สิ่งทั้งหมด
750 javascript  regex  match 

12
นิพจน์ปกติ: มีตัวดำเนินการ AND หรือไม่
เห็นได้ชัดว่าคุณสามารถใช้|(ท่อ?) เพื่อเป็นตัวแทนORแต่มีวิธีที่จะเป็นตัวแทนANDเช่นกัน? โดยเฉพาะฉันต้องการจับคู่ย่อหน้าข้อความที่มีวลีทั้งหมด แต่ไม่เรียงตามลำดับ
708 regex  lookahead 

25
ค้นหาและฆ่ากระบวนการในหนึ่งบรรทัดโดยใช้ bash และ regex
ฉันมักจะต้องฆ่ากระบวนการระหว่างการเขียนโปรแกรม วิธีที่ฉันทำตอนนี้คือ: [~]$ ps aux | grep 'python csp_build.py' user 5124 1.0 0.3 214588 13852 pts/4 Sl+ 11:19 0:00 python csp_build.py user 5373 0.0 0.0 8096 960 pts/6 S+ 11:20 0:00 grep python csp_build.py [~]$ kill 5124 ฉันจะแยก id กระบวนการโดยอัตโนมัติและฆ่าในบรรทัดเดียวกันได้อย่างไร แบบนี้: [~]$ ps aux | grep 'python csp_build.py' | kill …
648 regex  bash  terminal  awk 

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