正则表达式获取文件中单词使用和分号之间的逗号分隔列表

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 使用捕获组。但我只能设法得到第一组。在每个捕获组之间可以有空格或 1 个或多个换行符或两者都有。 这是我到目前为止所拥有的: ^使用(?:[\n|\s]*([a-z|.|A-Z]+)(?:,)+)

我认为你应该采取两步法:

从搜索整个源文件开始,捕获 之间的字符串:

  • uses(行首)+空格序列,
  • 和一个;,终止导入列表。

然后,在上述每个匹配项中,找到导入的项目。

第一个任务可以用^uses\s+([a-z.,\s]+);执行 下一步要处理的文本是 捕获组 1.

第二步,对上面的每一个匹配项进行, 你可以使用 [a-z]+(?:\.[a-z]+)*(?=[,;]).

以上两个正则表达式都应该用i执行(大小写 不敏感)、m(多行)和g(全局)选项。

请注意,单一正则表达式方法是错误的,因为如果捕获组 已匹配多次,则正则表达式处理器returns 只有最后一个匹配这样的组。