使用正则表达式从源代码中提取逗号分隔的单元
Extract comma separated units from source code using RegEx
我想使用正则表达式从我的源代码中提取信息。你能帮我构建一个 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 子句,但它不 return 每个文件名分开。
谢谢。
在 this page 它说 Delphi 使用 PCRE 正则表达式风格。
在这种情况下,一种选择是将捕获组与 \G
锚结合使用。
(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)
说明
(?:
非捕获组
^ *uses\r?\n *
从字符串的开头匹配可选空格,然后再次匹配一个换行符后跟可选空格
|
或
\G(?!^)
断言位置在上一个匹配的末尾,而不是在开始(\G
锚匹配在 2 个位置,要么在字符串的开头,要么在字符串的结尾上一场比赛)
)
关闭非捕获组
(\w+)
捕获第1组匹配1+个单词字符
(?:,\s*|;$)
非捕获组,匹配逗号和 0+ 个空白字符或匹配字符串末尾的 ;
。
我想使用正则表达式从我的源代码中提取信息。你能帮我构建一个 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 子句,但它不 return 每个文件名分开。
谢谢。
在 this page 它说 Delphi 使用 PCRE 正则表达式风格。
在这种情况下,一种选择是将捕获组与 \G
锚结合使用。
(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)
说明
(?:
非捕获组^ *uses\r?\n *
从字符串的开头匹配可选空格,然后再次匹配一个换行符后跟可选空格|
或\G(?!^)
断言位置在上一个匹配的末尾,而不是在开始(\G
锚匹配在 2 个位置,要么在字符串的开头,要么在字符串的结尾上一场比赛)
)
关闭非捕获组(\w+)
捕获第1组匹配1+个单词字符(?:,\s*|;$)
非捕获组,匹配逗号和 0+ 个空白字符或匹配字符串末尾的;
。