RegExp, чтобы остановить сопоставление после определенной строки
Я ищу RegExp, чтобы остановить сопоставление после определенного ключевого слова.
Это мой вклад:
blabl
тексты 1,40
TextB 3,50
textc 6,90
Blabal 2 3
ддд 3 диджей
ключ textd textf
2,30 4,70 5,90
Что я хочу соответствовать:
blabl
тексты 1,40
TextB 3,50
textc 6,90
Blabal 2 3
ддд 3 диджей
ключ textd textf
2,30 4,70 5,90
Как выглядит мой RegExp в данный момент
[\ D]{1,2}[.] [\ D]{2}
Что я пытался решить проблему
[\ D]{1,2}[.] [\ D]{2}(?= Ключ)
Поэтому я искал что-то вроде этого:
(Что я хочу сопоставить) (что угодно) (ключевое слово)
Я попробовал следующее RegExp:
([\ D] {1,2} [,]. [\ Д]{2} (|.? \ П) + (= ключ))
Но теперь это соответствует:
тексты 1,40
TextB 3,50
textc 6,90
Blabal 2 3
ддд 3 диджей
ключ textd textf
2,30 4,70 5,90
Я читал о группах без захвата, которые, казалось, решили мою проблему. Итак, я попробовал:
([\ D] {1,2} [,]. [\ Д]{2} (>
(|?.? \ П) +), (= ключ))
Но это совсем не соответствует.
Я чувствую, что я почти на месте, но я действительно мог бы помочь. Любая идея, что я пропускаю, ценится. Если у вас есть какие-либо вопросы относительно моей проблемы, пожалуйста, не стесняйтесь спрашивать.
Заранее спасибо за ваше время и усилия.
1 ответ
Вы можете использовать
/\d+[,.]\d+(?=[\s\S]*key)/g
Смотрите демо регулярных выражений.
подробности
\d+
- 1+ цифр[,.]
- а,
или же.
\d+
- 1+ цифр(?=[\s\S]*key)
- позитивный взгляд, который требует любых 0+ символов с последующим словомkey
сразу справа после совпадения последних 1+ цифр.
JS демо:
var s = "blabl\n\ntexta 1,40\ntextb 3.50\ntextc 6,90\n\nblabal 2 3\nddd 3 jj d \n\nkey textd textf\n2,30 4,70 5,90";
var rx = /\d+[,.]\d+(?=[\s\S]*key)/g;
console.log(s.match(rx));