RegExp, чтобы остановить сопоставление после определенной строки - PullRequest
0 голосов
/ 10 января 2019

Я ищу 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 диджей д

key textd textf
2,30 4,70 5,90

Как выглядит мой RegExp
[\ D] {1,2} [.] [\ D] {2}

Что я пытался решить проблему
[\ D] {1,2} [.] [\ D] {2} (? = Ключ)

Так что я искал что-то вроде этого:
(Что я хочу сопоставить) (что угодно) (ключевое слово)

Я попробовал следующий RegExp:
([\ D] {1,2} [d \] {2} ([,.] |.? \ П) + (= ключ))
Но теперь это соответствует:

текст 1,40
textb 3.50
textc 6,90

blabal 2 3
ддд 3 диджей д

key textd textf
2,30 4,70 5,90

Я читал о группах без захвата, которые, казалось, решили мою проблему. Поэтому я попытался:
([\ D] {1,2} [d \] {2} (> ([,.] |?.? \ П) +), (= ключ))
Но это совсем не соответствует.

Я чувствую, что я почти на месте, но я действительно мог бы помочь. Любая идея, что я пропускаю, ценится. Если у вас есть какие-либо вопросы относительно моей проблемы, пожалуйста, не стесняйтесь спрашивать.

Заранее спасибо за ваше время и усилия.

1 Ответ

0 голосов
/ 10 января 2019

Вы можете использовать

/\d+[,.]\d+(?=[\s\S]*key)/g

См. Демоверсию regex .

Детали

  • \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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...