Extraiga unidades separadas por comas del código fuente usando RegEx
Aug 20 2020
Quiero usar expresiones regulares para extraer información de mi código fuente. ¿Me pueden ayudar a construir un RegEx que recupere las unidades utilizadas en el código fuente?
Ejemplo de código fuente:
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;
...
...
Necesito obtener los nombres de archivo separados por comas desde la uses
cláusula hasta el siguiente ;
. En esa muestra, la salida debe ser:
Windows
Messages
SysUtils
Variants
Classes
Graphics
Controls
Forms
Dialogs
Manteniment
estoy intentando algo como
^ *uses(\n* *(\w*),)* *\n* *(\w*) *;
Coincide con la cláusula uses, pero no devuelve cada nombre de archivo por separado.
Gracias.
Respuestas
6 Thefourthbird Aug 20 2020 at 18:19
En esta página dice que Delphi usa el sabor de expresión regular PCRE.
En ese caso, una opción es usar un grupo de captura en combinación con el \G
ancla.
(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)
Explicación
(?:
Grupo de no captura^ *uses\r?\n *
Haga coincidir espacios opcionales desde el comienzo de la cadena, luego haga coincidir y una nueva línea seguida de espacios opcionales nuevamente|
O\G(?!^)
Afirmar la posición al final del partido anterior, no al comienzo (El\G
ancla coincide en 2 posiciones, ya sea al comienzo de la cadena o al final del partido anterior)
)
Cerrar grupo de no captura(\w+)
Grupo de captura 1 Partido 1+ caracteres de palabra(?:,\s*|;$)
Grupo sin captura, haga coincidir una coma y más de 0 caracteres de espacio en blanco o haga coincidir;
al final de la cadena.
Demostración de expresiones regulares