RegEx를 사용하여 소스 코드에서 쉼표로 구분 된 단위 추출

Aug 20 2020

정규식을 사용하여 소스 코드에서 정보를 추출하고 싶습니다. 소스 코드에 사용 된 단위를 검색하는 RegEx를 작성하도록 도와 주실 수 있습니까?

소스 코드 샘플 :

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;
...
...     

uses다음 절까지 쉼표로 구분 된 파일 이름을 가져와야합니다 ;. 이 샘플에서 출력은 다음과 같아야합니다.

Windows
Messages
SysUtils
Variants
Classes
Graphics
Controls
Forms
Dialogs
Manteniment

나는 뭔가를 시도하고있다

^ *uses(\n* *(\w*),)* *\n* *(\w*) *;

uses 절과 일치하지만 각 파일 이름을 개별적으로 반환하지 않습니다.

감사합니다.

답변

6 Thefourthbird Aug 20 2020 at 18:19

에서 이 페이지 는 델파이는 PCRE의 정규식 맛을 사용했다.

이 경우 한 가지 옵션은 \G앵커 와 함께 캡처 그룹을 사용하는 것입니다 .

(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)

설명

  • (?: 비 캡처 그룹
    • ^ *uses\r?\n * 문자열의 시작 부분에서 선택적 공백을 일치시킨 다음 일치 및 개행과 선택적 공백을 다시 일치시킵니다.
    • | 또는
    • \G(?!^)시작이 아닌 이전 일치의 끝에서 위치를 지정합니다 ( \G앵커는 문자열의 시작 또는 이전 일치의 끝에서 두 위치에서 일치).
  • ) 비 캡처 그룹 닫기
  • (\w+)캡처 그룹 1 1 개 이상의 단어 문자 일치
  • (?:,\s*|;$)비 캡처 그룹, 쉼표 및 0+ 공백 문자와 일치하거나 ;문자열 끝에서 일치 합니다.

Regex 데모