#regex
#регулярное выражение
Вопрос:
У меня есть элементы оглавления, которые мне понадобятся для регулярного выражения. Данные не являются полностью однородными, и я не могу заставить их работать во всех случаях.
Данные следующие:
1. Header 1
1.2. SubHeader2
1.2.1 Subheader
1.2.2. Another header
1.2.2.1 Test
1.2.2.2. Test2
Поэтому мне нужно было бы получить как номер, так и заголовок в разных группах. Число должно быть без конечной точки, если она есть. Проблема, с которой я борюсь, заключается в том, что не все числа имеют конечную точку.
Я пробовал
^([0-9.] )[.]s (. )$ -- Doesnt work when there is no trailing
^([0-9.] )[.]?s (. )$ -- Contains the trailing dot if it is there
Ответ №1:
Вы можете использовать
^(d (?:.d )*).?s (. )
Смотрите демонстрацию регулярных выражений. Подробные сведения:
^
— начало строки(d (?:.d )*)
— Группа 1: одна или несколько цифр, а затем ноль или более повторений последовательности a.
и одной или нескольких цифр.?
— необязательный.
s
— один или несколько пробелов(. )
— Группа 2: любой один или несколько символов, отличных от символов разрыва строки, как можно больше.