Решение должно быть ( ссылка ):
(?m)\G(\d+)\s+\*(\w*.*)(?:[\n\r]+|$)
Однако ... В приведенном вами примере неправильный шаблон находится в первой строке, поскольку *
нет в такой строке. Это приводит меня к выводу, что вы должны игнорировать все строки до первого матча. Если это ваша спецификация, то решение должно быть ( link ):
(?m)\A(?:\d+\s+[^*]\w*.*$[\n\r]*)*|\G(\d+)\s+\*(\w*.*)(?:[\n\r]+|$)
Этот расширенный шаблон регулярного выражения будет работать, даже если перед первым соответствием не будет прерванного шаблона.
Пожалуйста, имейте в виду, что первое совпадение этого решения должно быть проигнорировано, так как оно содержит эти игнорируемые строки перед первым совпадением, или оно пустое, если нет строк, которые необходимо игнорировать.
Ключом вышеупомянутых решений является использование \G
, якоря, совпадающего в позиции, где закончилось предыдущее совпадение.