Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432

Доработки поиска в фигурных скобках

08.09.2018, 17:40. Показов 2111. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, написал небольшую регулярку для поиска внутри фигурных скобок { }

JavaScript
1
2
3
var string = "{12} text text {34} text"
var regex = /[^{}]\d*(?=})/g;
var matches = string.match(regex); // ["str1", "str2"]
Можно, кончено вытащить все это дело в массив типа такого:

JavaScript
1
[ "{~12}", "{~34}" ]
а потом пробежаться по нему и получить все что нужно, но хотелось бы обойтись без дополнительных циклов

Добавлено через 3 часа 44 минуты
Только заметил, что суть самого вопроса удалил случайно

Как можно переделать шаблон поиска, чтобы искал: {~12}. А на выходе получали бы: 12

Добавлено через 16 минут
Вообщем, пока решил с помощью дополнительной обработки циклом.
JavaScript
1
2
3
4
5
6
7
8
var string = "{~123} text {~0} {~22}";
var regexp = /{~\d+}/g;
var matches = string.match(regexp);
var result = [];
matches.forEach(elem => {
  result.push(elem.slice(2,-1));
});
console.log(result);
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2018, 17:40
Ответы с готовыми решениями:

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

Только цифры в {фигурных скобках}
Знаю что для цифр вот так: preg_replace('//', '', $string); не могу дописать чтобы он их в фигурных скобках определял... например...

Что означают get и set в фигурных скобках?
Например есть класс, внутри описываются поля: public class TournirInfo0 { public int TeamsCount { get; set; } ...

4
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.09.2018, 13:57
Здравствуйте, у Вас здесь два разных условия задачи. Для каждой:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        variant1();
        variant2();
 
        function variant1() {
            let str = "{12} text text {34} text"
            let regex = /{(\d+)}/g;
            let result = [];
            for (let match = regex.exec(str); match != null; match = regex.exec(str)) {
                result.push(match[1]);
            }
            console.log(result);
        }
 
        function variant2() {
            let str = "{~12} text text {~34} text"
            let regex = /{~(\d+)}/g;
            let result = [];
            let match;
            while (match = regex.exec(str)) {
                result.push(match[1]);
            }
            console.log(result);
        }
    </script>
</body>
</html>
1
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
10.09.2018, 17:47  [ТС]
Вamr-now, вы немного не поняли Мне нужно было вытащить одной регуляркой, без циклов.
Спасибо, можно было подробно не расписывать

При изменении условий регулярного выражения, variant2 не работал, почему-то, но мое решение, вроде, справлялось. Странновато, конечно. Оставил пока свое решение
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
11.09.2018, 11:40
Лучший ответ Сообщение было отмечено zontik24 как решение

Решение

zontik24, если имеется сильное желание принципиально не использовать группы в регулярном выражении с множественным поиском, а следовательно и циклы.

То в Хроме и Опере работать будет, а в MS Edge работать пока не будет:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        variant2();
 
        function variant2() {
            let str = "{~12} text text {~34} text"
            let match = str.match(/(?<={~)\d+(?=})/g);
            var result = [];
 
            match.forEach(e => { result.push(e); });
            console.log(result);
        }
    </script>
</body>
</html>
Позитивный look behind ждём, когда завезут в MS Edge.
0
 Аватар для zontik24
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
12.09.2018, 11:07  [ТС]
amr-now, спасибо за уточнение. Про IE сразу не подумал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2018, 11:07
Помогаю со студенческими работами здесь

Выдает ошибку в последних двоих фигурных скобках
Выдает ошибку в последних двоих фигурных скобках #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #define n 7 ...

Регулярное выражение для символов в фигурных скобках
Добрый день, форумчане. Ищу строку {%x%}, где x один или несколько символов. \{%]*\%} Моё выражение ищет только если 'x'-...

Расхождение в открывающих-закрывающих фигурных скобках php
Здравствуйте, помогите найти недостающие, лишние фигурные скобки в коде. if(empty($_COOKIE) or $_COOKIE &lt;= 0) { $obj = new...

Почему массив точек задается в фигурных скобках
PointF point= new PointF { v, v, v, v }; Объясните, пожалуйста, мне что значит в фигурных скобках v.

Распарсить txt файл и получить текст в фигурных скобках
Есть текстовый файл вида: #This configuration file was written by:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru