Это довольно простое регулярное выражение, но я не могу придумать, как расширить это регулярное выражение, чтобы оно позволяло использовать мой символ-разделитель, если он экранирован в строке. Вот что у меня есть:
// Contents of str is exactly '|1|2|\|Three and Four\||5'
str.match(/[^|]/);
// Looking for: ['1', '2', '|Three and Four|', '5']
Итак, в настоящее время мое регулярное выражение выбирает все, что не является символом |
, и я получаю массив каждого элемента. Но я хочу игнорировать символ |
в качестве разделителя, если он был экранирован первым с помощью \
, но, конечно, я не хочу, чтобы \
проходил.
Я знаю, что это будет помечено как дубликат миллиарда других вопросов с регулярными выражениями, но я попытался применить другие решения здесь к своим собственным и поэкспериментировал с regex101.com. Увы, мой Regex Fu не силен.
P.s. Кто-нибудь знает какие-нибудь хорошие ресурсы для изучения регулярных выражений со вкусом JS?
@charlietfl
|
в этом столбце экранированы (\|
) и, таким образом, не разделители. Рассмотрим вариант (где экранированные разделители не прилегают к обычным разделителям):|1|hello\|happy\|world|2
->'1', 'hello|happy|world', '2'
.var str = '|1|2|\|Three and Four\||5';
равноvar str = '|1|2||Three and Four||5';
в js@xianshenglu @user2864740 Верно, не подумал прояснить это. Это поток данных, который я преобразовал в строку, чтобы иметь возможность манипулировать им и получать доступ к каждому элементу между
|
, но некоторые из элементов включают|
, которые не следует рассматривать как разделители.Возможный дубликат RegEx, необходимый для разделения строки javascript на "|" а не "\|" (там нашел кое-что :D)
Примечание: дубликат по-прежнему остается (фактически запрашивает такой) в \| -- это можно исправить, заменив \| в результирующих компонентах после расщепления.