C # RegEx заменяет только совпадение, если нет другого текста в строке - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть следующий шаблон RegEx:

@"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm"

Он должен заменить строки, такие как:

  • 10203040
  • 10 20 30 40
  • + 45 10 20 30 40
  • + 4510203040

Это мой метод замены:

var text = "10 10 10 10";
text = Regex.Replace(text, @"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm", "****");

Приведенный выше код возвращает "****"это правильно.

var text = "10 10 10 10 10203040";
text = Regex.Replace(text, @"^((\(?\+45\)?)?)(\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2})$/gm", "****");

Приведенный выше код не заменяет текст и просто возвращает исходную строку - мне нужен этот код для возврата" **** **** ", так как есть двавхождения чисел, которым я должен соответствовать.

Я надеюсь, что кто-то может мне помочь - заранее спасибо :)

1 Ответ

1 голос
/ 21 сентября 2019

Вы привязали свое регулярное выражение для начала (^) и конца ($) строки, поэтому они будут выполнять замены только в том случае, если совпадающая строка представляет собой всю строку.Снимите анкеры, и они должны работать как положено.

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