Как Regex искать / заменять только первое вхождение в строку в .NET?

Кажется, что метод .NET Regex.Replace автоматически заменяет все совпадающие вхождения. Я мог бы предоставить делегат MatchEvaluator, который возвращает согласованную строку после первой замены, не меняя никаких изменений, но для меня это очень неэффективно.

Какой самый эффективный способ остановиться после первой замены?

Из MSDN :

Replace(String, String, Int32) 

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

Разве это не то, чего вы хотите?

Чтобы ответить на исходный вопрос … Следующее регулярное выражение соответствует только первому экземпляру слова foo:

(?

В этом регулярном выражении используется отрицательный lookbehind (?

Вероятно, вы использовали статический метод. Для этого нет (String, String, Int32) перегрузки. Сначала создайте объект регулярного выражения и используйте myRegex.Replace.

В этом случае вы не можете использовать:

 string str ="abc546_$defg"; str = Regex.Replace(str,"[^A-Za-z0-9]", ""); 

Вместо этого вам нужно объявить новый экземпляр Regex и использовать его следующим образом:

 string str ="abc546_$defg"; Regex regx = new Regex("[^A-Za-z0-9]"); str = regx.Replace(str,"",1) 

Обратите внимание на 1 , Он представляет количество случаев, в которые должна произойти замена.

Вместо создания new Regex вы также можете сделать

Regex.Replace(originalString, "^"+pattern, stringToReplaceWith);

чтобы заменить первое вхождение.

  • Regex любой символ ASCII
  • Regex заменить все \ n на String, но не те внутри тега
  • Regex, который будет соответствовать декларации Java-метода
  • Java regex для извлечения текста между тегами
  • Захват квантификаторов и арифметика квантификаторов
  • Как обрабатывать специальные символы в регулярном выражении Perl?
  • Java - регулярное выражение, содержащее комментарии в коде
  • Как выбрать шаблон пробела?
  • Notepad ++ Удаляет все, кроме 40 переменных, помещая их в свою линию, комбинируя регулярное выражение
  • «Совпадение не найдено» при использовании метода группы совпадений
  • Список всех файлов, соответствующих шаблону полного пути в R
  • Давайте будем гением компьютера.