Javascript — Как извлечь текст с помощью регулярного выражения

#javascript #node.js #regex

Вопрос:

Я новичок в регулярных выражениях. Теперь мне нужно написать его в соответствии с моими потребностями. У меня есть эта строка:

1 [00:00:12.00 — 00:01:20.00] Здравствуйте, я пришел вам помочь.

Мне бы как-то нужно было привести его в эту форму:

 const extracted = [
"1",
"[00:00:12.00 - 00:01:20.00]",
"Hello there - I've come to help you."
]
 

Я пробовал использовать этот подход:

 const testSubject = "1 [00:00:12.00 - 00:01:20.00] Hello there - I've come to help you."
let result = testSubject.match(/$[^$]  $/)
 

Но я получаю эту ошибку:

Недопустимое регулярное выражение: /$[^$] $/: Нечего повторять

Я использовал это место, чтобы получить шаблон: http://regex.inginf.units.it/

Комментарии:

1. Притяжательный квантор не поддерживается в Javascript, кроме того, почему вы пытаетесь сопоставить $ ?

2. Ваше регулярное выражение означает : «Знак доллара, за которым следует что угодно, кроме знака доллара (повторение), (повторение), знака доллара». Не уверен, что это соответствует вашей строке. Ошибка возникает из-за секунды (repetition) , которой до этого нечего повторять. Попробуйте regexpal

3. Возможно, вы можете разделить, используя s (?=[|(?<=]s )) в качестве шаблона, но у вас есть лучшая альтернатива в разделе ответов, используя группу захвата.

Ответ №1:

Как уже указывал анубхава, притяжательные кванторы не поддерживаются в Javascript. Вы можете увидеть сообщение об ошибке в этой демонстрации при выборе Javascript на левой панели.

В строке нет $ , но если вы хотите использовать класс отрицаемых символов, не соответствующий скобкам, вы можете использовать класс отрицаемых символов с группой захвата и использовать разделение.

 const pattern = /s*([[^][] ])s*/;
const s = "1 [00:00:12.00 - 00:01:20.00] Hello there - I've come to help you.";
console.log(s.split(pattern))