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 데모