Мне нужно javascript регулярное выражение, которое соответствует строкам, которые начинаются с # и заканчиваются либо \ n #, либо концом строки (который всегда идет первым).
Samples - https://regex101.com/r/rpjPkl/4
Для следующих образцов:
Образец 1: #always: test\n#asdf
Результаты: #always: test
с группами always
и test
Образец 2: #always: test\n#range: [0, 255]
Результаты: #always: test
с группами always
и test
и #range: [0, 255]
с группами range
и [0, 255]
Я пробовал (часами ...) различные версии следующего:
#([a-z]+):(.+)((\\n#)|$)
#([a-z]+):((^\\n#)|$)+
Обновление 1:
Результаты группы должны выделяться \n
, если его нашли. Если невозможно получить вышеуказанные группы, мне нужно, как минимум, следующие результаты групп
Образец 1 ожидающих групп: #always: test
Образец 2 ожидающих групп: #always: test
и #range: [0, 255]
Обратите внимание, что \n
может существовать как группа, но не может быть включена в вышеуказанные группы.
Обновление 2
Я предоставляю более исчерпывающую информацию образец, который должен охватывать (мы надеемся) весь сценарий ios.
Ссылка живого образца: https://regex101.com/r/rpjPkl/4 Ответ должен быть проверен на соответствие тестовой строке, найденной в этой ссылке (аналогично приведенному ниже. Пример 3 ).
Образец 3:
#always: line1\nline#2\n#range: [0, 255]\n#obj: { prop: '#a1',
prop2: 2 }\n#more: "where #2"
Ожидаемые совпадения / группы
Совпадение 1: #always: line1\nline#2
Группа 1: always
Группа 2: line1\nline#2
Матч 2: #range: [0, 255]
Группа 1: range
Группа 2: [0, 255]
Матч 3:
#obj: { prop: '#a1',
prop2: 2 }
Группа 1: obj
Группа 2:
{ prop: '#a1',
prop2: 2 }
Матч 4: #more: "where #2"
Группа 1: more
Группа 2: "where #2"