Любое количество любых символов

235
04 мая 2018, 10:26

Как, используя регулярные выражения задать паттерн вида :

Начало ... конец ,

где ... это любые символы включая пробелы, тире подчеркивания и целые числа причем сколько их неизвестно. Я пытаюсь сделать это так :

var pattern = new Regex(@"Start:\S*\s*End");

т.к. \S* - ноль или более символов не яв-ся пробелом а \s* - ноль или более символов являющихся. Однако это неправильно. Как исправить ?

Answer 1

Используйте

var pattern = new Regex(@"Start:.*?End", RegexOptions.Singleline);

Подробности

  • Start: - начальный разделитель
  • .*? - 0 и более любых символов, как можно меньше (*? — ленивый квантификатор)
  • End - конечный разделитель
  • RegexOptions.Singleline - флаг, благодаря которому . находит все символы, даже символы перевода строки.

Сининимические конструкции:

var pattern = new Regex(@"(?s)Start:.*?End");
var pattern = new Regex(@"Start:(?s:.*?)End");

Однако, если необходимо найти подстроку, в которой не должно быть разделителей, нужно использовать "умеренно жадный токен" (tempered greedy token):

var pattern = new Regex(@"(?s)Start:(?:(?!Start:).)*?End");
                                     ^^^^^^^^^^^^^^^^

Этот шаблон в строке Start: 1, Start: 2, End: 56 найдет Start: 2, End, а не Start: 1, Start: 2, End.

READ ALSO
Как запустить скрипт, если нет exe?

Как запустить скрипт, если нет exe?

Как запустить скрипт, если нет exe?

272
Поиск слова в тексте и удаление ненужных слов c#

Поиск слова в тексте и удаление ненужных слов c#

В общем есть строка n-й длины (Текст от 5 до 1000 слов)

237
На какой платформе лучше делать сайт? [требует правки]

На какой платформе лучше делать сайт? [требует правки]

подскажите на какой платформе лучше учиться программировать сайты?

316
@media css внешний файл

@media css внешний файл

Доброго времени суток всемВообщем начал я изучать @media и возникло много вопросов, но не могу найти в интернете не чего ну или плохо ищю) Возможно...

387