Mendapatkan semula Teks selepas Regex Match
Dalam usaha anda untuk menggunakan Regex dengan berkesan, anda telah menghadapi cabaran: mengekstrak teks mengikut corak yang dipadankan . Mari kita mendalami penyelesaiannya.
Corak Regex asal anda, "ayat(.*)", hampir mencapai matlamat anda. Walau bagaimanapun, ia secara sewenang-wenangnya menangkap kedua-dua rentetan yang dipadankan ("ayat") dan teks seterusnya. Untuk meminda perkara ini, kita perlu memperkenalkan konsep yang dikenali sebagai "penegasan pandang belakang".
Menggunakan Penegasan Pandang Belakang
Penegasan pandangan di belakang yang positif (?<=. ..) sepadan dengan kedudukan tertentu dalam rentetan, sejurus selepas ungkapan yang diberikan. Dalam kes ini, kami mahu memadankan kedudukan sejurus selepas rentetan "ayat":
(?<=sentence).*
Corak ini dibaca sebagai "Padankan sifar atau lebih aksara selepas kedudukan yang 'ayat' serta-merta mendahuluinya." Oleh itu, ia berjaya mengekstrak teks yang diingini.
Melaksanakan dalam Java
Untuk melaksanakan ini dalam Java, anda boleh mengubah suai kod anda seperti berikut:
Pattern pattern = Pattern.compile("(?<=sentence).*"); Matcher matcher = pattern.matcher("some lame sentence that is awesome"); boolean found = false; while (matcher.find()) { System.out.println("I found the text: " + matcher.group().toString()); found = true; } if (!found) { System.out.println("I didn't find the text"); }
Kini, apabila Regex digunakan pada rentetan input, ia hanya akan memadankan dan mencetak teks berikut "ayat":
I found the text: that is awesome
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Teks Selepas Padanan Regex Menggunakan Penegasan Lookbehind?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!