Используйте регулярные выражения в Visual Studio для сопоставления (непоследовательного) и замены повторяющейся строки в выражении

#regex #visual-studio

#регулярное выражение #visual-studio

Вопрос:

Мне поручено провести рефакторинг пространств имен в решении vs2015, удалив повторяющиеся слова.

  1. Мне нужно регулярное выражение FIND, которое возвращает эти пространства имен и все, что могло использоваться или на что ссылались.
  2. Мне нужно заменить регулярное выражение, чтобы удалить второе вхождение слова из пространства имен.

ПРИМЕР
TestApp.SA.TestApp => TestApp.SA
TestApp.TestApp.SA => TestApp.SA

Вот мое регулярное выражение для поиска (которое, я знаю, может быть лучше): TestApp.*?(TestApp)

Кто-нибудь, пожалуйста, помогите с выражением для замены, которое, я думаю, заключается в том, чтобы установить второе вхождение TestApp в пробел?

Комментарии:

1. Чтобы найти их, вы могли бы попробовать (w ).(w .)*1 . Чтобы найти их, попробуйте (w )((?:.w )*).1 и замените на $1$2 .

2. Большое спасибо, это работает, я просто думаю, что мне нужно уточнить выражение find, I возвращает некоторые нежелательные результаты, такие как цифры. Примером является поиск 1.0.0.0, и после замены я получаю 1.0.0. Большое спасибо за мгновенную помощь.

3. Да, вам нужно использовать ([A-Z]w*).([A-Za-z_]w*.)*1 или что-то в этом роде.

Ответ №1:

Шаблоны, которые я предложу, не являются на 100% безопасным решением, но покажут вам способ использования регулярных выражений для поиска и поиска и замены в ваших файлах.

Основными выражениями, которые вы можете использовать для этой задачи, являются

 (w ).(w .)*1
  

и

 Find:     (w )((?:.w )*).1
Replace:  $1$2
  

Смотрите демонстрацию регулярных выражений

Шаблоны означают:

  • (w ) — сопоставьте и запишите 1 буквенно-цифровые символы / символы подчеркивания в группу 1
  • . — соответствует буквенной точке
  • (w .)* — ноль или более последовательностей ( (...)* ) символов из 1 слов, за которыми следует точка (каждое последующее подстановочное соответствие приведет к удалению буфера группы 2, но это не важно при простом поиске)
  • 1 обратная ссылка на содержимое, записанное в группе 1

Второй шаблон почти такой же, просто группы захвата немного скорректированы для замены пронумерованных обратных ссылок для правильной замены текста.