Regex извлекает строку на основе шаблона - PullRequest
0 голосов
/ 12 декабря 2018

См. Ниже строку, которую мы имеем в документе

    32Main Section
    32.1Assignment and transfers by Obligors
    32.2Additional Borrowers
    (a)Subject to compliance with the provisions of paragraphs (c) and (d) of Clause 28.10 ("Know your customer" checks),

Ожидаемый вывод (Вывод списка только в том случае, если у них есть этот шаблон xx.xx в начале строки)

32.1Assignment and transfers by Obligors
32.2Additional Borrowers

Regexмы пытаемся \d+(\.\d{1,2}.*)

Но это также дает нам 3-ю строку, которой у нас нет, так как в середине строки она имеет номер.Мы хотим перечислить только те строки, которые начинаются с цифры или десятичной дроби ...

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы хотите сопоставить любую строку, начинающуюся с цифры, поэтому ^\d+(?:\.\d{1,2})?.*, которая может быть сокращена до ^\d.*, выполнит эту работу.

Лучшая идея - указать разделитель для числа.Скажите,

^\d+(?:\.\d{1,2})?[ .].*
                  ^^^^

Или убедитесь, что нет цифры:

^\d+(?:\.\d{1,2})?(?!\d).*
                  ^^^^^^

Для [ .] потребуется пробел или . после начального номера.

Подробности

  • ^ - начало строки
  • \d+ - 1+ цифр
  • (?:\.\d{1,2})? - необязательногруппа без захвата
    • \. - точка
    • \d{1,2} - 1 или 2 цифры
  • [ .] - пробел или .
  • .* - остаток строки.
0 голосов
/ 12 декабря 2018

Вы можете попробовать этот помощник

^\d+\.\d+.*

Объяснение

  • ^ - Привязка к началу строки.
  • \d+\.\d+ - соответствует xx.xx шаблону (x - число).
  • .* - соответствует любому значению, кроме новой строки.ноль или более времени (жадный режим)

Демо

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