#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)
, которой до этого нечего повторять. Попробуйте regexpal3. Возможно, вы можете разделить, используя
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))