当前位置:  开发笔记 > 编程语言 > 正文

正则表达式环视

如何解决《正则表达式环视》经验,为你挑选了1个好方法。

我不认为只用正则表达式就可以做到这一点,但我不是专家所以我认为值得一提.

我正在尝试使用.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);

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

有没有一种很好的方法可以用正则表达式来做到这一点,还是我必须在我的逻辑中使用脚本?



1> Binary Worri..:

看看我对这个问题的答案从C#文件中获取方法内容

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

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

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有