Регулярное выражение для текста только из целых чисел, разделенных символами новой строки - PullRequest
0 голосов
/ 12 октября 2019

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

^[1-9]\d{0,8}[\r\n]?$

Он описывает одну строку текста.

Как указать, что это выражение применимо к 1 или более строкам текста? Я не исключаю, что в вышеприведенном выражении потребуются изменения.

Ответы [ 2 ]

1 голос
/ 12 октября 2019

у вас есть ^[line_pattern]$ регулярное выражение. Чтобы развернуть его, чтобы проверить многострочную строку, где каждая строка должна совпадать с [line_pattern], используйте ^[line_pattern](?:\r?\n[line_pattern])*$. В некоторых движках, которые поддерживают регулярное выражение \R, замените \r?\n на него.

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

^[1-9]\d{0,8}(?:\r?\n[1-9]\d{0,8})*$

или

^[1-9]\d{0,8}(?:\R[1-9]\d{0,8})*$

Itсоответствует

  • ^ - начало строки
  • [1-9]\d{0,8} - ненулевая цифра, за которой следуют от 0 до 8 любых цифр
  • (?:\r?\n[1-9]\d{0,8})* -0 или более повторений
    • \r?\n - конец строки только в CRLF или LF (\R соответствует любой последовательности разрыва строки)
    • [1-9]\d{0,8} - ненулевая цифра с последующимОт 0 до 8 любые цифры
  • $ - конец строки.
1 голос
/ 12 октября 2019

Ваше выражение было для одной строки. Я просто изменил ваше выражение, чтобы сказать, что будет один или несколько из них, используя скобки и плюс, чтобы указать «один или несколько».

Я также отредактировал способ защиты конца строки. Я предполагаю, что всегда есть CRLF или LF в конце каждого числа:

^([1-9]\d{0,8}\r?\n)+$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...