Автор Тема: [RegExp] Получить числа внутри скобок, разделённые запятой  (Прочитано 1527 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн axsmak [?]

  • Кот
  • Новичок
  • *
  • Сообщений: 24
  • Репутация: 5
  • Пол: Мужской
    • Перекрёсток Алексея Бабиева
    • Награды
  • Версия AutoIt: 3.3.14.0
В принципе, из названия темы всё понятно, уточню лишь примером:

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

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

Русское сообщество AutoIt


Оффлайн axsmak [?]

  • Кот
  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 5
  • Пол: Мужской
    • Перекрёсток Алексея Бабиева
    • Награды
  • Версия AutoIt: 3.3.14.0
Вроде осилил сам:
Код: AutoIt [Выделить]
Local $s = "бла-бла (12345, 67890) бла-бла-бла"
Local $aNums = StringRegExp($s, '\([^0-9]?(\d+)[^0-9]?,[^0-9]?(\d+)[^0-9]?\)', 3)
_ArrayDisplay($aNums)
 

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

Оффлайн ra4o [?]

  • Продвинутый
  • ***
  • Сообщений: 411
  • Репутация: 59
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Тоже пытаюсь освоить регулярные выражения. Попробовал разобраться в Вашем шаблоне, зачем так сложно ? Не проще ли просто найти все десятичные цифры  так : :
Код: AutoIt [Выделить]
Local $s = "бла-бла (12345, 67890) бла-бла-бла"
Local $aNums = StringRegExp($s, '(\d+)', 3)
_ArrayDisplay($aNums)
 


Оффлайн axsmak [?]

  • Кот
  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 5
  • Пол: Мужской
    • Перекрёсток Алексея Бабиева
    • Награды
  • Версия AutoIt: 3.3.14.0
ra4o Мой опыт в регулярках 5 минут) Просто быстро надо было реализовать. Спасибо

Русское сообщество AutoIt

Re: [RegExp] Получить числа внутри скобок, разделённые запятой
« Ответ #3 Отправлен: Январь 06, 2017, 11:50:06 »

Онлайн Alofa [?]

  • Скриптер
  • ****
  • Сообщений: 902
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Надо проверить:
« Последнее редактирование: Январь 06, 2017, 12:16:42 от Alofa »
----------------------- Вы думаете, всё так просто? Да, всё просто. Но совсем не так. -----------------------
Альберт Эйнштейн.

Оффлайн ra4o [?]

  • Продвинутый
  • ***
  • Сообщений: 411
  • Репутация: 59
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
Надо проверить:
Пробовал так - не находит ничего.

Онлайн Alofa [?]

  • Скриптер
  • ****
  • Сообщений: 902
  • Репутация: 111
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic
... Пробовал так - не находит ничего.
Прошу прощения за флуд с телефона.

... зачем так сложно ?
А вот зачем:
Код: AutoIt [Выделить]
$s = "(бла)-бла (12345, 67890 ) бла-(111111)бла-бла"


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




Добавлено: Январь 07, 2017, 01:38:46
... Мой опыт в регулярках 5 минут)
Да вы гений... Или может я такой тугоум. ;D
« Последнее редактирование: Январь 07, 2017, 12:30:35 от Alofa »

Русское сообщество AutoIt

Re: [RegExp] Получить числа внутри скобок, разделённые запятой
« Ответ #6 Отправлен: Январь 07, 2017, 01:06:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
3117 Просмотров
Последний ответ Август 29, 2011, 11:24:30
от Yashied
5 Ответов
6569 Просмотров
Последний ответ Сентябрь 22, 2011, 23:46:37
от Medic84
6 Ответов
3040 Просмотров
Последний ответ Октябрь 21, 2011, 13:16:54
от Trans
2 Ответов
2253 Просмотров
Последний ответ Май 26, 2012, 04:44:49
от Yashied
2 Ответов
2608 Просмотров
Последний ответ Август 06, 2012, 20:54:12
от MockeR
2 Ответов
1963 Просмотров
Последний ответ Март 15, 2013, 14:37:44
от AZJIO
0 Ответов
1393 Просмотров
Последний ответ Август 17, 2013, 22:02:52
от Viktor1703
4 Ответов
1776 Просмотров
Последний ответ Июль 27, 2014, 21:28:25
от CreatoR
0 Ответов
423 Просмотров
Последний ответ Ноябрь 06, 2014, 19:00:01
от madmasles
4 Ответов
4817 Просмотров
Последний ответ Август 24, 2016, 13:27:30
от iltmpz