gpt4 book ai didi

regex - 使用正则表达式从源代码中提取逗号分隔的单元

转载 作者:行者123 更新时间:2023-12-04 00:54:36 24 4
gpt4 key购买 nike

我想使用正则表达式从我的源代码中提取信息。你能帮我构建一个 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 子句,但它不会单独返回每个文件名。

谢谢。

最佳答案

this page它说 Delphi 使用 PCRE 正则表达式风格。

在这种情况下,一种选择是将捕获组与 \G anchor 结合使用。

(?:^ *uses\r?\n *|\G(?!^))(\w+)(?:,\s*|;$)

解释

  • (?: 非捕获组
    • ^ *uses\r?\n * 从字符串的开头匹配可选空格,然后再次匹配一个换行符,后跟可选空格
    • | 或者
    • \G(?!^) 断言位置在上一个匹配的末尾,而不是在开始(\G anchor 匹配在 2 个位置,要么在字符串的开头或上一个匹配项的结尾)
  • ) 关闭非捕获组
  • (\w+) 捕获第1组匹配1+个单词字符
  • (?:,\s*|;$) 非捕获组,匹配逗号和 0+ 个空白字符或匹配字符串末尾的 ; .

Regex demo

关于regex - 使用正则表达式从源代码中提取逗号分隔的单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63502442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com