Что нового

[RegExp] Получить числа внутри скобок, разделённые запятой

axsmak

Знающий
Сообщения
32
Репутация
7
В принципе, из названия темы всё понятно, уточню лишь примером:

Есть строка вида "бла-бла (12345, 67890) бла-бла-бла"
Нужно получить числа в массив

PS: Если у кого есть дежурная ссылка на рускоязычное а-ля "Регулярки для чайников" буду благодарен
 
Автор
axsmak

axsmak

Знающий
Сообщения
32
Репутация
7
Вроде осилил сам:
Код:
Local $s = "бла-бла (12345, 67890) бла-бла-бла"
Local $aNums = StringRegExp($s, '\([^0-9]?(\d+)[^0-9]?,[^0-9]?(\d+)[^0-9]?\)', 3)
_ArrayDisplay($aNums)

На всякий случай исключил любые случайные символы кроме самих чисел
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Тоже пытаюсь освоить регулярные выражения. Попробовал разобраться в Вашем шаблоне, зачем так сложно ? Не проще ли просто найти все десятичные цифры так : :
Код:
Local $s = "бла-бла (12345, 67890) бла-бла-бла"
Local $aNums = StringRegExp($s, '(\d+)', 3)
_ArrayDisplay($aNums)
 
Автор
axsmak

axsmak

Знающий
Сообщения
32
Репутация
7
ra4o Мой опыт в регулярках 5 минут) Просто быстро надо было реализовать. Спасибо
 
A

Alofa

Гость
OffTopic:
ra4o сказал(а):
... Пробовал так - не находит ничего.
Прошу прощения за флуд с телефона.


ra4o сказал(а):
... зачем так сложно ?
А вот зачем:
Код:
$s = "(бла)-бла (12345, 67890 ) бла-(111111)бла-бла"


ИМХО, pattern axsmak считаю правильным, все остальное это оптимизация и наведение красоты.
К примеру так:
Код:
Local $aNums = StringRegExp($s, '\(\D*(\d+)\D+?(\d+)[^)]*\)', 3)




Добавлено:
Сообщение автоматически объединено:

axsmak сказал(а):
... Мой опыт в регулярках 5 минут)
Да вы гений... Или может я такой тугоум. ;D
 
Верх