Ekstrak unit yang dipisahkan koma dari kode sumber menggunakan RegEx
Aug 20 2020
Saya ingin menggunakan Ekspresi Reguler untuk mengekstrak informasi dari kode sumber saya. Dapatkah Anda membantu saya membuat RegEx yang mengambil unit yang digunakan pada kode sumber?.
Contoh kode sumber:
unit ComandesVendes;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Manteniment;
type
TFComandesVendes = class(TFManteniment,ActualitzacioFinestra)
QRCapsaleraNumero: TIntegerField;
QRCapsaleraData: TDateTimeField;
QRCapsaleraDataEntrega: TDateTimeField;
...
...
Saya perlu mendapatkan nama file yang dipisahkan koma sejak uses
klausa hingga berikutnya ;
. Dalam sampel itu, keluarannya harus:
Windows
Messages
SysUtils
Variants
Classes
Graphics
Controls
Forms
Dialogs
Manteniment
Saya mencoba sesuatu seperti
^ *uses(\n* *(\w*),)* *\n* *(\w*) *;
Ini cocok dengan klausa use, tetapi tidak mengembalikan setiap nama file secara terpisah.
Terima kasih.
Jawaban
6 Thefourthbird Aug 20 2020 at 18:19
Di halaman ini dikatakan bahwa Delphi menggunakan PCRE regex flavor.
Dalam hal ini, salah satu opsinya adalah menggunakan grup penangkap yang dikombinasikan dengan \G
jangkar.
(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)
Penjelasan
(?:
Kelompok non tangkap^ *uses\r?\n *
Cocokkan spasi opsional dari awal string, lalu cocokkan dan baris baru diikuti lagi dengan spasi opsional|
Atau\G(?!^)
Tegaskan posisi di akhir pertandingan sebelumnya, bukan di awal (\G
Jangkar cocok di 2 posisi, baik di awal string atau di akhir pertandingan sebelumnya)
)
Tutup grup non tangkap(\w+)
Tangkap grup 1 Cocokkan 1+ karakter kata(?:,\s*|;$)
Bukan grup tangkap, cocokkan koma dan 0+ karakter spasi kosong atau cocokkan;
di akhir string.
Demo ekspresi reguler
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'