Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
regex以获取文件中单词uses和分号之间的逗号分隔列表_Regex_Capturing Group - Fatal编程技术网

regex以获取文件中单词uses和分号之间的逗号分隔列表

regex以获取文件中单词uses和分号之间的逗号分隔列表,regex,capturing-group,Regex,Capturing Group,正如标题所说,我需要在delphi文件中查找所有导入。文本看起来有点像这样: uses X.Y.Z, A.B, C.D.F; class procedure 所以我的正则表达式匹配是: X.Y.Z A.B 到岸价 我知道我需要为X.Y.Z.使用捕获组,但我只能设法获得第一个组。在每个捕获组之间可以有空格或1个或多个换行符,或者两者都有。 以下是我到目前为止的情况: ^使用(?:[\n |\s]*([a-z |.| a-z]+)(?:,)+)我认为您应该采取两步方法: 从搜索整个源文件开

正如标题所说,我需要在delphi文件中查找所有导入。文本看起来有点像这样:

uses X.Y.Z, A.B, C.D.F;  class procedure 
所以我的正则表达式匹配是:

  • X.Y.Z
  • A.B
  • 到岸价
我知道我需要为X.Y.Z.使用捕获组,但我只能设法获得第一个组。在每个捕获组之间可以有空格或1个或多个换行符,或者两者都有。 以下是我到目前为止的情况:
^使用(?:[\n |\s]*([a-z |.| a-z]+)(?:,)+)

我认为您应该采取两步方法:

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

  • 使用
    (行首)+空格序列
  • 和一个
    ,正在终止导入列表
然后,在上述每个匹配项中查找导入的项

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

在第二步中,对上述每个匹配执行, 您可以使用
[a-z]+(?:\.[a-z]+)*(?=[,;])

上述两个正则表达式都应使用
i
(case)执行 不敏感),
m
(多行)和
g
(全局)选项

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

您使用的是什么语言/工具?