Я не думаю, что это возможно только с помощью регулярных выражений, но я не эксперт, поэтому я подумал, что стоит спросить.
Я пытаюсь выполнить массивный поиск и замену кода C #, используя регулярные выражения .NET. То, что я хочу сделать, это найти строку кода, где определенная функция вызывается для переменной типа 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);
и первое совпадение включает в себя объявление второй переменной.
Есть ли хороший способ сделать это только с помощью регулярных выражений, или я должен прибегнуть к скриптингу в моей логике?