Регулярный вопрос.Шаблон соответствия в строке - PullRequest
0 голосов
/ 31 декабря 2018

в основном нужно, чтобы вся строка соответствовала, если она имеет следующий шаблон:

ЦИФРЫ ПРОСТРАНСТВЕННЫХ СЛОВ (от 1 до 3). ПРОБЕЛ

Итак, следующеестрока будет соответствовать:

30 boxes 30 boxes 30 boxes boxes boxes 

Но следующее не будет совпадать:

30 boxes 30 boxes boxes boxes boxes 30 boxes 

ПРИМЕЧАНИЕ: последний символ в строке - это пробел

Iдо следующего момента иметь следующее регулярное выражение:

(\d+)(\s)(([a-zA-Z]+)(\s)){1,3}

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018
var s = "30 boxes 30 boxes boxes boxes boxes 30 boxes ";
var pattern = @"(?i)^(\d+(\s+[a-z]+\s*)+){1,3}$";
WriteLine($"Is match: {Regex.IsMatch(s, pattern)}"); // => Is match: true
0 голосов
/ 31 декабря 2018

Я предлагаю использовать

^(?:\d+(?:\s+[a-zA-Z]+){1,3}\s*)+$

См. regex demo

Это соответствует

  • ^ - начало строки
  • (?:\d+(?:\s+[a-zA-Z]+){1,3}\s*)+ - одно или несколько экземпляров
    • \d+ - 1 или более цифр
    • (?:\s+[a-zA-Z]+){1,3} - одно, два или три экземпляра
      • \s+ - 1+ пробелов
      • [a-zA-Z]+ - 1+ букв ASCII
  • \s* - 0+ пробелов
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...