【问题标题】:regex to get comma seperated list between the word uses and a semicolon in a file正则表达式在文件中的单词uses和分号之间获取逗号分隔的列表
【发布时间】:2019-07-29 04:11:48
【问题描述】:

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

uses X.Y.Z, A.B, C.D.F;  class procedure 

所以我的正则表达式匹配将是:

  • X.Y.Z
  • A.B
  • C.D.F

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

【问题讨论】:

  • 您使用什么语言/工具?

标签: regex capturing-group


【解决方案1】:

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

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

  • uses(在行首)+一系列空格,
  • ;,终止导入列表。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多