Есть текст:
[asdasd|asda sdas] asdasd fneughwegh [4ghehrh|gfebgubegoe] sdfsdfsf
Мне нужно получить из него:
[asdasd|asda sdas]
[4ghehrh|gfebgubegoe]
Я написал вот такую регулярку: \[.*\|.*\]
Она возвращает вот это: [asdasd|asda sdas] asdasd fneughwegh [4ghehrh|gfebgubegoe]
Т.е. берет первую скобку, и последнюю. Почему?
без подробностей пока так:
var str = '[asdasd|asdasdas] asdasd fneughwegh [4ghehrh|gfebgubegoe] sdfsdfsf';
var re = /(\[[^\s]+\|[^\s]+\])/gi;
var found = str.match(re);
console.log(found);
то есть предполагаю, что внутри скобок нет пробелов, а остальные символы разрешены
если пробелы нужны:
var str = '[asd asd|asda sdas] asdasd fneughwegh [4ghehrh|gfebgubegoe] sdfsdfsf';
var re = /(\[.*?\|.*?\])/gi;
var found = str.match(re);
console.log(found);
Проблема описана в википедии:
В некоторых реализациях квантификаторам в регулярных выражениях соответствует максимально длинная строка из возможных (квантификаторы являются жадными, англ. greedy). Это может оказаться значительной проблемой. Например, часто ожидают, что выражение (<.*>) найдёт в тексте теги HTML. Однако если в тексте есть более одного HTML-тега, то этому выражению соответствует целиком строка, содержащая множество тегов.
<p><b>Википедия</b> — свободная энциклопедия, в которой <i>каждый</i> может изменить или дополнить любую статью.</p>
Эту проблему можно решить двумя способами.
Жадный | Ленивый
* | *?
+ | +?
{n,} | {n,}?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть компонент, в который входят 2 других компонента: кнопки и блок, кнопок несколько, и при нажатии на кнопку, блок должен принимать ее цветНе...
Пытаюсь обойти это баг уже более суток без снаПосле того как я отправляю внешний запрос то важная onInit перестает вызываться у компонентов...
Добрый день мне необходимо чтобы этот скрипт выполнялся при заходе с мобильного
Хочу сделать скрипт, чтобы сдвинув мышь на определенное количество пикселей вниз выполнялся внутренний скрипт