Bagaimana cara menangkap beberapa garis di sekitar pertandingan regex?


8

Saya mencari ekspresi regex untuk mencocokkan beberapa baris pada baris yang cocok. Sebagai contoh:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX

Saya ingin menangkap 2 baris di atas XXXXXXXX.

Bantuan apa pun akan dihargai. Catatan: dengan Python menggunakan library re


1
Menggunakan perangkat lunak apa? Program yang berbeda memiliki ide yang berbeda tentang apa itu regexp.
David Richerby

Menggunakan Python secara khusus atau dalam alat / bahasa apa pun?
kenorb

Jika Anda menggunakan python, mungkin lebih baik untuk membuang keseluruhan ke dalam array, di mana setiap baris adalah elemennya sendiri. Anda kemudian loop melalui array, menemukan XXXXXXXX, setelah ditemukan gunakan indeks item -1 dan -2 untuk mendapatkan baris.
LPChip

hi man terima kasih atas sarannya, saya sudah melakukannya dengan for loop tetapi bertanya-tanya bagaimana caranya dengan regex
takobaba

Jawaban:


15

RegEx berikut menguji jumlah variabel garis sebelum XXXXXXXXgaris dan mengembalikannya dalam kelompok tangkapan pertama.

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

  1. (.*\n)tes untuk string yang diakhiri dengan \n, baris baru.
  2. {2} menghitung ini 2 kali.
  3. () sekitar itu memastikan semua garis datang dalam satu kelompok tangkap.
  4. XXXXXXXX adalah string yang harus diakhiri dengan teks.

Sekarang dengan Python, Anda dapat menggunakan p.match(regex)[0]untuk mengembalikan grup tangkapan pertama.


4
Berhati-hatilah karena ini dapat menyebabkan masalah pada Windows. Jika ya, coba \r\nbukan hanya \n.
Qix - MONICA DISALAHKAN

1
Tentu saja, ini hanya akan cocok dengan garis yang dimulai dengan XXXXXXXX(tetapi tidak harus diakhiri dengan XXXXXXXX).
G-Man Mengatakan 'Reinstate Monica'

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.