ฉันจะทดสอบและใช้นิพจน์ปกติของ Perl แบบโต้ตอบได้อย่างไร


15

สมมติว่าฉันมีบัฟเฟอร์พร้อมข้อความ ฉันต้องการทดสอบการแสดงออกปกติ (ประเภท Perl นึกคิด) กับบัฟเฟอร์ของฉันและมี Emacs เน้นการแข่งขันในนั้น

ตัวอย่างเช่น regexp ต่อไปนี้ ( นำมาจาก Wikipedia ):

(?<=\.) {2,}(?=[A-Z]) 

จะจับคู่ดังต่อไปนี้ในข้อความต่อไปนี้:

                    ป้อนคำอธิบายรูปภาพที่นี่

การแสดงออกปกตินี้โดยเฉพาะอย่างยิ่งการจับคู่อย่างน้อยสองช่องว่างที่เกิดขึ้นหลังจากระยะเวลา(.)และก่อนที่ตัวอักษรตัวพิมพ์ใหญ่

Emacs จัดเตรียมmatcher นิพจน์ปกติเชิงโต้ตอบสำหรับนิพจน์ปกติของPerlหรือไม่

หากคำตอบของคำตอบคือไม่ใช่:

  1. มีเหตุผลที่สนับสนุนพื้นเมืองของการแสดงออกปกติPerlไม่ได้ (เคย) พิจารณาใน Emacs? (พิจารณาว่าเป็นมาตรฐานที่รู้จักกันดีใน Unix / Linux)

  2. วิธีการหนึ่งสามารถดำเนินการเกี่ยวกับการสร้างหนึ่ง matcher Perl regexp เช่น? (อาจจะเรียก Perl ภายใต้ประทุนหรือก่อนการแปลง regexp Perl เป็นตัวแปรที่สนับสนุน?)


2
Emacs regexps Perl ก่อนหน้านี้บางครั้งและฉันคิดว่าพวกเขาไม่ได้เปลี่ยนด้วยเหตุผลด้านความเข้ากันได้ย้อนหลัง
shosti

1
นอกจากนี้คุณอาจต้องการตรวจสอบgithub.com/joddie/pcre2el (ฉันไม่ได้ใช้มันดังนั้นฉันไม่สามารถรับรองได้)
shosti

คำตอบ:


15

- มีสองแพคเกจที่ดีสำหรับการทำงานกับชนิดของ Perl regexes ได้อย่างมีประสิทธิภาพซึ่งควรจะใช้ร่วมกันเป็นภาพ regexpและการขยายของมัน - ภาพ regexp-เตียรอยด์ พวกเขาเป็นส่วนเสริมที่ดีของ emacs:

ป้อนคำอธิบายรูปภาพที่นี่


2
เพื่อความกระจ่างชัด visual-regexp ใช้ emacs regexp และเวอร์ชั่นสเตียรอยด์สามารถใช้ PCRE หรือ Python regex เป็นแบ็กเอนด์
Kaushal Modi

6

re-builderทำให้สามารถสร้างรูปแบบปกติของ emacs lisp ได้อย่างรวดเร็ว ฉันไม่รู้ว่ามีแพ็คเกจที่เทียบเท่าสำหรับการสร้างการแสดงออกปกติของ Perl แบบโต้ตอบหรือไม่

ดูhttp://www.masteringemacs.org/articles/2011/04/12/re-builder-interactive-regexp-builder/สำหรับการสนทนาเพิ่มเติม

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