วิธีจับคู่ของเส้นรอบการแข่งขัน regex?


8

ฉันกำลังค้นหานิพจน์ regex เพื่อจับคู่สองบรรทัดเหนือเส้นที่ตรงกัน ตัวอย่างเช่น:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX

ฉันต้องการจับ 2 บรรทัดเหนือ XXXXXXXX

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม หมายเหตุ: ด้วย Python โดยใช้ไลบรารี่อีกครั้ง


1
ใช้ซอฟต์แวร์อะไร? โปรแกรมที่แตกต่างกันมีแนวคิดที่แตกต่างกันเกี่ยวกับ regexp คืออะไร
David Richerby

ใช้ Python โดยเฉพาะหรือในเครื่องมือ / ภาษาใด ๆ ?
kenorb

หากคุณใช้ python มันอาจจะเป็นการดีกว่าถ้าคุณทิ้งดัชทั้งหมดลงในอาเรย์โดยที่แต่ละแถวเป็นองค์ประกอบของมันเอง จากนั้นวนรอบอาร์เรย์เพื่อค้นหา XXXXXXXX เมื่อพบแล้วให้ใช้ดัชนีของรายการนั้น -1 และ -2 เพื่อรับเส้น
LPChip

hi man ขอบคุณสำหรับคำแนะนำฉันทำมันไปแล้วด้วย for for loop แต่สงสัยว่าจะทำอย่างไรกับ regex
takobaba

คำตอบ:


15

RegEx ต่อไปนี้ทดสอบจำนวนบรรทัดที่แปรผันก่อนXXXXXXXXบรรทัดและส่งคืนในกลุ่มการจับภาพแรก

((.*\n){2})XXXXXXXX

  1. (.*\n)ทดสอบสำหรับสตริงที่ลงท้ายด้วย\nขึ้นบรรทัดใหม่
  2. {2} ปริมาณ 2 ครั้งนี้
  3. () รอบที่ทำให้แน่ใจว่าทุกบรรทัดมาในกลุ่มการจับภาพหนึ่ง
  4. XXXXXXXX เป็นสตริงที่ข้อความต้องลงท้ายด้วย

ใน Python คุณสามารถใช้p.match(regex)[0]เพื่อส่งคืนกลุ่มการดักจับแรก


4
ระวังสิ่งนี้อาจทำให้เกิดปัญหาใน Windows ถ้าไม่ลองแทนเพียง\r\n \n
Qix - MONICA ถูกยกเลิกเมื่อ

1
แน่นอนว่าสิ่งนี้จะจับคู่เฉพาะบรรทัดที่ขึ้นต้นด้วยXXXXXXXX(แต่ไม่จำเป็นต้องลงท้ายด้วยXXXXXXXX)
G-Man กล่าวว่า 'Reinstate Monica'

0

การเพิ่มคำตอบของ erikgaal ให้ใช้ส่วนเสริม * ก่อน xxxxxx เพื่อจับคู่แท็บ / ช่องว่างสีขาว

((. * \ n) {2}). * xxxxxxx


1
ดี.*จะไม่ตรงกับเพียงแค่แท็บ / พื้นที่; มันจะจับคู่ทุกอย่าง (เช่น "The XXXXXXX สีน้ำตาลด่วน")
G-Man กล่าวว่า 'Reinstate Monica'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.