Получение совпадения с помощью Regex - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно найти соответствующий результат, т.е. строку, используя Regex. Позвольте мне продемонстрировать сценарий, используя примеры входных данных.

string input= "xb-cv_107_20190608_032214_006";          // <-1st case
string input = "yb-ha_107_20190608_032214_006__foobar"; // <-2nd case
string input= "fv_vgf_ka01mq3286__20190426_084135_039"; // <-3rd case
string input="fv_vgf_ka01mq3286__2090426_084135_039"; //<-4th case

Для ввода в первом случае требуется вывод = "xb-cv_107_20190608_032214_006". Для ввода второго случая требуется вывод = "yb-ha_107_20190608_032214_006". Для ввода в третьем случае требуется вывод = "fv_vgf_ka01mq3286__20190426_084135_039". Для ввода в 4-м случае вывод required = null, поскольку шаблон не совпадает.

Процедура получения выходных данных:

  • Проверьте, используя регулярное выражение, если шаблон заканчивается на _, за которым следуют 8 десятичных знаков, затем '_', затем 6 десятичных знаков и 3 десятичных знака
  • Или проверьте с помощью регулярных выражений, что шаблон заканчивается на _, за которым следуют 8 десятичных знаков, затем _, за которыми следуют 6 десятичных знаков, за которыми следуют 3 десятичных знака, за которыми следует __, за которыми следует что-либо случайное.

До сих пор я придумал выражение Regex:

string pattern = @".+[_][0-9]{8}[_][0-9]{6}[_][0-9]{3}([_]{2})?";
var result = Regex.Match(input, pattern)?.Groups[0].Value ;

1 Ответ

3 голосов
/ 04 февраля 2020

Вы можете использовать

var result = Regex.Match(input, @"^(.+_[0-9]{8}_[0-9]{6}_[0-9]{3})__")?.Groups[1].Value;

Regex details :

  • ^ - начало строки
  • ( - Начало группы 1:
    • .+ - любые 1+ символов, кроме LF, как можно больше
    • _[0-9]{8}_[0-9]{6}_[0-9]{3} - _, 8 цифр, _, 6 цифр, _, 3 цифры
  • ) - конец группы 1
  • __ - два подчеркивания.

Если есть является совпадением, result содержит значение, которое находится в группе 1.

Если совпадений нет, result равно null .

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