Regex negate в Visual Stud ios поиск найти / заменить - PullRequest
3 голосов
/ 04 марта 2020

Я пишу поиск и замену для Visual Stud ios и пытаюсь переключить все наши переменные publi c на get / sets.

Regex: ^public ((?!({))(?!=).)*;


      //MATCHES CORRECTLY
public string Country;
public string EmailAddress;
public string FirstName;
public string LastName;
public string PhoneNumber;
public string PostalCode;
public string State;
public List<Object> Example;

          //MATCHES BUT SHOULDNT
public event GetUserListCompletedEventHandler GetUserListCompleted;
public delegate void GetUserListCompletedEventHandler(object sender, GetUserListCompletedEventArgs e);

          //DOES NOT MATCH CORRECTLY
throw new Exception("In order to get the public date for blah blah blah");
public List<Order> orderDetails = new List<Order>();        
public string CustomerName { get; set; }
public string BillingAddress1 { get; set; }
public string BillingAddress2 { get; set; }

У меня есть удалось заставить событие / делегат игнорироваться в регулярном выражении, но в Visual Stud ios синтаксический анализатор регулярного выражения вызывает недоумение, когда я пытаюсь использовать этот код

^public ((?!({|event|delegate))(?!=).)*;

Однако это не работает в VS 2019, несмотря на использование | быть действительным согласно их собственному документу.

https://docs.microsoft.com/en-us/visualstudio/ide/using-regular-expressions-in-visual-studio?view=vs-2019

Второй вопрос - вывод, который я делаю: $ 0 {get; набор; }

public string Country; { get; set; }

Итак, мне нужно сделать второй поиск / замену, чтобы изменить это, чтобы удалить;, потому что я не могу понять, как сгруппировать деталь перед точкой с запятой, не получая совпадений для отрицательных совпадений .


Итак, у меня есть две проблемы

1) Как я могу заставить событие / делегатов игнорироваться с помощью регулярных выражений в VS

2) Как я могу получить группа для первого раздела для вывода, поэтому я игнорирую; в замен.

Любая помощь или направление очень ценится.

1 Ответ

2 голосов
/ 04 марта 2020

Как насчет этого регулярного выражения? Он игнорирует уже замененный код, а также инициализации. И это также не захватывает точку с запятой в конце, но требует, чтобы это было там. И, как предлагается в комментарии, заменить на первую группу захвата. Я полагаю, что это будет «$ 1 {get; set;}» (может отличаться в зависимости от двигателей регулярных выражений, я не знаком с c# движком)

^(public (?!delegate|event)[^=\n{]*(?=;))

https://regex101.com/r/VHwmeR/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...