gpt4 book ai didi

c# - 正则表达式环视

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:46 25 4
gpt4 key购买 nike

我不认为仅使用正则表达式这是可能的,但我不是专家所以我认为这值得一问。

我正在尝试使用 .NET 正则表达式对 C# 代码进行大量搜索和替换。我想要做的是找到一行代码,其中对 DateTime 类型的变量调用特定函数。例如:

axRecord.set_Field("CreatedDate", m_createdDate);

而且我会知道它是一个 DateTime 变量 b/c 在该代码文件的前面将是以下行:

DateTime m_createdDate;

但似乎我不能在负面回顾中使用命名组,例如:

(?<=DateTime \k<1>.+?)axRecord.set_[^ ]+ (?<1>[^ )]+)

如果我尝试像这样匹配变量声明和函数调用之间的所有文本:

DateTime (?<1>[^;]+).+?axRecord.set.+?\k<1>

它将找到第一个匹配项 - 首先基于声明的第一个变量 - 但随后找不到任何其他匹配项,因为代码布局如下:

DateTime m_First;
DateTime m_Second;
...
axRecord.set_Field("something", m_First);
axRecord.set_Field("somethingElse", m_Second);

第一个匹配包含第二个变量声明。

是否有仅使用正则表达式来执行此操作的好方法,还是我必须在我的逻辑中求助于脚本?

最佳答案

看看我对这个问题的回答Get a methods contents from a C# file

它提供指向页面的链接,这些页面显示如何使用内置的 .net 语言解析器来简单可靠地执行此操作(即,不是通过询问“我正在搜索的用法看起来像什么”,而是通过正确解析代码使用 VS 代码解析工具)。

我知道这不是 RegEx 答案,但我不认为 RegEx 是答案。

关于c# - 正则表达式环视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/425071/

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