正则表达式获取文件中单词使用和分号之间的逗号分隔列表
regex to get comma seperated list between the word uses and a semicolon in a file
如标题所述,我需要在 delphi 文件中找到所有导入。文本看起来有点像这样:
uses X.Y.Z, A.B, C.D.F; class procedure
所以我的正则表达式匹配将是:
- X.Y.Z
- A.B
- C.D.F
我知道我需要为 X.Y.Z 使用捕获组。但我只能设法得到第一组。在每个捕获组之间可以有空格或 1 个或多个换行符或两者都有。
这是我到目前为止所拥有的:
^使用(?:[\n|\s]*([a-z|.|A-Z]+)(?:,)+)
我认为你应该采取两步法:
从搜索整个源文件开始,捕获
之间的字符串:
uses
(行首)+空格序列,
- 和一个
;
,终止导入列表。
然后,在上述每个匹配项中,找到导入的项目。
第一个任务可以用^uses\s+([a-z.,\s]+);
执行
下一步要处理的文本是
捕获组 1.
第二步,对上面的每一个匹配项进行,
你可以使用 [a-z]+(?:\.[a-z]+)*(?=[,;])
.
以上两个正则表达式都应该用i
执行(大小写
不敏感)、m
(多行)和g
(全局)选项。
请注意,单一正则表达式方法是错误的,因为如果捕获组
已匹配多次,则正则表达式处理器returns
只有最后一个匹配这样的组。
如标题所述,我需要在 delphi 文件中找到所有导入。文本看起来有点像这样:
uses X.Y.Z, A.B, C.D.F; class procedure
所以我的正则表达式匹配将是:
- X.Y.Z
- A.B
- C.D.F
我知道我需要为 X.Y.Z 使用捕获组。但我只能设法得到第一组。在每个捕获组之间可以有空格或 1 个或多个换行符或两者都有。 这是我到目前为止所拥有的: ^使用(?:[\n|\s]*([a-z|.|A-Z]+)(?:,)+)
我认为你应该采取两步法:
从搜索整个源文件开始,捕获 之间的字符串:
uses
(行首)+空格序列,- 和一个
;
,终止导入列表。
然后,在上述每个匹配项中,找到导入的项目。
第一个任务可以用^uses\s+([a-z.,\s]+);
执行
下一步要处理的文本是
捕获组 1.
第二步,对上面的每一个匹配项进行,
你可以使用 [a-z]+(?:\.[a-z]+)*(?=[,;])
.
以上两个正则表达式都应该用i
执行(大小写
不敏感)、m
(多行)和g
(全局)选项。
请注意,单一正则表达式方法是错误的,因为如果捕获组 已匹配多次,则正则表达式处理器returns 只有最后一个匹配这样的组。