Поиск…


Синтаксис

  • new Regex(pattern); // Создает новый экземпляр с определенным шаблоном.
  • Regex.Match(input); // Запускает поиск и возвращает совпадение.
  • Regex.Matches(input); // Запускает поиск и возвращает MatchCollection

параметры

название подробности
Шаблон string шаблон, который должен использоваться для поиска. Для получения дополнительной информации: msdn
RegexOptions [Необязательно] Общие варианты здесь: Singleline и Multiline . Они меняют поведение элементов шаблона, таких как точка (.), SingleLine-Mode не будет покрывать NewLine (\ n) в Multiline-Mode но в SingleLine-Mode . По умолчанию: msdn
Таймаут [Дополнительно] Там, где модели становятся более сложными, поиск может потреблять больше времени. Это пропущенный тайм-аут для поиска, как известно из сетевого программирования.

замечания

Необходимо использовать

using System.Text.RegularExpressions;

Хорошо бы иметь

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

Особенно новички имеют тенденцию перегружать свои задачи с помощью регулярного выражения, потому что он чувствует себя мощным и в нужном месте для сложных текстовых поисков. Это тот момент, когда люди пытаются разбирать xml-документы с регулярным выражением, даже не спрашивая себя, может ли быть уже готовый класс для этой задачи, такой как XmlDocument .

Regex должен быть последним оружием, чтобы выбрать сложность повтора. По крайней мере, не забудьте приложить некоторые усилия, чтобы найти right way прежде чем записывать 20 строк шаблонов.

Единый матч

using System.Text.RegularExpressions;

string pattern = ":(.*?):";
string lookup = "--:text in here:--";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
// Get the match from your regex-object
Match mLookup = rgxLookup.Match(lookup);

// The group-index 0 always covers the full pattern.
// Matches inside parentheses will be accessed through the index 1 and above.
string found = mLookup.Groups[1].Value;

Результат:

found = "text in here"

Несколько совпадений

using System.Text.RegularExpressions;

List<string> found = new List<string>();
string pattern = ":(.*?):";
string lookup = "--:text in here:--:another one:-:third one:---!123:fourth:";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
MatchCollection mLookup = rgxLookup.Matches(lookup);

foreach(Match match in mLookup)
{
    found.Add(match.Groups[1].Value);
}

Результат:

found = new List<string>() { "text in here", "another one", "third one", "fourth" }


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow