Автор Тема: [RegExp] Повторяющаяся группа в определенной строке  (Прочитано 1210 раз)

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

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226
  • Репутация: 60
  • Пол: Мужской
    • Награды
Добрый день.
Подскажите, как заставить группу захватить все значения в кавычках? Вроде * после группы должна ее заставить несколько раз отработать.
В данный момент только s2 в массив попадает.
Код: AutoIt [Выделить]
$a='data["a1","b3","c5","s2"]'
$a=StringRegExp($a,'data\[("[^"]*?",?)*\]',3)
_ArrayDisplay($a)
 


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

[RegExp] Повторяющаяся группа в определенной строке
« Отправлен: Апрель 04, 2018, 07:05:05 »

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
StringRegExp($a, '(?s)"(.*?)"', 3)

возможно
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226

  • Автор темы
  • Репутация: 60
  • Пол: Мужской
    • Награды
Код: AutoIt [Выделить]
StringRegExp($a, '(?s)"(.*?)"', 3)

возможно
В 'data["a1","b3","c5","s2"], test["r1","g3","z5","v2"]' оно сожрет все значения, а надо например только в data взять.
Еще уточню, мне нужно понять можно ли сделать это одной регуляркой и как, а сами данные я могу вытащить например применив 2 регулярки.

Оффлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 880
  • Репутация: 357
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
#include 'array.au3'
$file='data["a1","b3","c5","s2"], test["r1","g3","z5","v2"]'
$str=StringRegExp($file,'data[^\]]+"([^",]+)","([^",]+)","([^",]+)","([^",]+)"',3)
_ArrayDisplay($str)


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

Re: [RegExp] Повторяющаяся группа в определенной строке
« Ответ #3 Отправлен: Апрель 04, 2018, 12:40:48 »

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226

  • Автор темы
  • Репутация: 60
  • Пол: Мужской
    • Награды
Код: AutoIt [Выделить]
#include 'array.au3'
$file='data["a1","b3","c5","s2"], test["r1","g3","z5","v2"]'
$str=StringRegExp($file,'data[^\]]+"([^",]+)","([^",]+)","([^",]+)","([^",]+)"',3)
_ArrayDisplay($str)


Спасибо, но под определенное кол-во значений это понятно, но их может быть сколько угодно, а не 4, как я для примера привел.

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1431
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... но их может быть сколько угодно, а не 4...
А чего еще может быть? Зачитайте весь список пожалуйста.

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226

  • Автор темы
  • Репутация: 60
  • Пол: Мужской
    • Награды
[А чего еще может быть? Зачитайте весь список пожалуйста.
Например:
1.
Парсинг html<table id="Нужная таблица, но их в может быть несоклько с разными названиями">
 <tr>Нужные значения</tr>
<tr>Которых может быть кто его знает сколько</tr>
</table>

2.
Парсинг JSONНужная группа["значения","которых может быть","кто его знает","сколько"], test["r1","g3","z5","v2"]

Смысл один, в определенном предложении найти повторяющиеся по шаблону слова.
« Последнее редактирование: Апрель 04, 2018, 16:03:21 от r35p3ct »

Помечен как лучший ответ пользователем r35p3ct Отправлен Апрель 11, 2018, 09:27:26

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Код: AutoIt [Выделить]
#include <Array.au3>

$sStr = 'data["a1","b3","c5","s2"], test["r1","g3","z5","v2"]'
$aRet = StringRegExp($sStr, '\G(?:"([^"]+)")+(?:\h*,\h*|\h*\])|data\[\h*', 3)

_ArrayDisplay($aRet)



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

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

Re: [RegExp] Повторяющаяся группа в определенной строке
« Ответ #7 Отправлен: Апрель 10, 2018, 18:25:35 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
16 Ответов
14467 Просмотров
Последний ответ Октябрь 11, 2010, 23:53:35
от CreatoR
3 Ответов
6437 Просмотров
Последний ответ Март 25, 2012, 01:22:03
от asdf8
14 Ответов
6831 Просмотров
Последний ответ Июль 03, 2012, 00:48:36
от Garrett
4 Ответов
3404 Просмотров
Последний ответ Март 03, 2013, 21:02:34
от Naisho
19 Ответов
5246 Просмотров
Последний ответ Февраль 26, 2015, 22:11:44
от AZJIO
2 Ответов
2104 Просмотров
Последний ответ Апрель 23, 2015, 17:30:35
от Vovsla
1 Ответов
2250 Просмотров
Последний ответ Июнь 07, 2016, 19:00:02
от InnI
2 Ответов
2372 Просмотров
Последний ответ Июнь 09, 2016, 14:14:59
от Dk
4 Ответов
5902 Просмотров
Последний ответ Август 24, 2016, 13:27:30
от iltmpz
4 Ответов
617 Просмотров
Последний ответ Август 15, 2017, 14:24:20
от mv6677