С# регулярное выражение для поиска укуса

В С# я хочу последовательно искать строку PQR (без учета регистра) ABC XYZ (с учетом регистра) в строке. Каким будет регулярное выражение для этого?

например

  • это тестовая строка pqrABC XYZ => IsMatch() должна возвращать true
  • Пример PQRanotherABC XYZ test => IsMatch() должен возвращать true
  • этот PQR является еще одним тестом abc xyz => IsMatch() должен возвращать false, поскольку abc xyz не находится в верхнем регистре
  • Контрольная строка ABC XYZpqr => IsMatch() должна возвращать значение false, поскольку строки не находятся в последовательности
  • hello pqr test ABC & XYZ => IsMatch() должен возвращать false, поскольку строки ABC XYZ не существуют.
  • hello123 pqr\n\n\n (новая строка) test ABC XYZ bla bla bla => должен возвращать true

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

Заранее спасибо.

2 ответа

Это должно сделать это

(?i)pqr.*(?-i)ABC XYZ

(?i) означает нечувствительность к регистру; (?-i) означает чувствительность к регистру.

EDIT: используйте однострочный режим, если это может охватывать линии

Regex.Matches(input, "(?i)pqr.*(?-i)ABC XYZ", RegexOptions.Singleline)


Это должно сделать это:

[pP][qQ][rR].*ABC XYZ
  • [pP] соответствует p или P, то же самое для [qQ] и [rR],
  • .* соответствует любому символу (.), любое количество раз (*), т.е. может существовать материал между pqr и ABC, который игнорируется,
  • ABC XYZ соответствует буквенной строке ABC XYZ.

Для регулярных выражений.NET вы можете начать с вводной страницы, которая содержит несколько примеров:

licensed under cc by-sa 3.0 with attribution.