Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Регулярные выражения в AutoIt

Ответить
Настройки темы
[решено] Регулярные выражения в AutoIt

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Заранее прошу прощения если темы уже была, поиском не нашол ничего подходящего.
Вообщем проблема в следующем, читал русскую справку (про английскую вообще молчу) и никак не могу понять написание шаблонов для
В справке не достаточно понятно как использовать такие шаблоны. + к этому у меня всегда были проблемы с рег. выражениями в других языках...

Хотелось бы чтоб ктонибудь объяснить популярно как составлять такие шаблоны.
В справке есть таблица специальных символов (Элементы шаблона), но по ней для меня очень сложно составить шаблон.
Пример такой:
Нужно из текста выковырять все ссылки такого вида:
view.php?ad=122887
view.php?ad=12285
view.php?ad=1222287
Меняется только число после =
Дак вот вродибы простое выражение, а у меня составило много трудностей.
Исходя из справки у меня получился такой шаблон:
Код: Выделить весь код
StringRegExp($Text, "(view.php?ad=)\d*", 1)
Но он в корне не правильный, а у меня даже мысли нет почему?
Поэтому прошу помощи в освоении регулярных выражениях...

-------
Хочу научиться писать драйвера на с++


Отправлено: 15:37, 15-04-2010

 

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
{"n":4,"d":[[73355227,1274794749,["Необходимо получить двумерный массив:"],[53261465,"jhgf jjj","http://cs386.userapi.com/u53261465/y_hjjg.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354434,1274792979,["morgan1991, дайте рабочий пример в несколько строчек"],[53261465,"test morgan","http://cs386.userapi.com/u53261465/84_jtfd921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354284,1274792596,["Спасибочки)))))"],[40839431,"Viktoria Test","http://cs580.userapi.com/u40839431/k_gif5913.jpg","c_89cf5a1x:002",1,0],[1411059575]],[73340415,1274730302,["привет,как у тебя дела????"],[53261465,"Alenka Press","http://cs386.userapi.com/u53261465/u_f45f921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],"h":883000002}

-------
Хочу научиться писать драйвера на с++


Отправлено: 08:24, 26-05-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


morgan1991, хде-то так:
Код: Выделить весь код
#include <array.au3>

$sText = '{"n":4,"d":[[73355227,1274794749,["Необходимо получить двумерный массив:"],[53261465,"jhgf jjj","http://cs386.userapi.com/u53261465/y_hjjg.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354434,1274792979,["morgan1991, дайте рабочий пример в несколько строчек"],[53261465,"test morgan","http://cs386.userapi.com/u53261465/84_jtfd921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354284,1274792596,["Спасибочки)))))"],[40839431,"Viktoria Test","http://cs580.userapi.com/u40839431/k_gif5913.jpg","c_89cf5a1x:002",1,0],[1411059575]],[73340415,1274730302,["привет,как у тебя дела????"],[53261465,"Alenka Press","http://cs386.userapi.com/u53261465/u_f45f921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],"h":883000002}'
$aText = StringRegExp($sText, '\[(\d++),(\d++),\["([^]"]*+)"\],\[(\d++),"([^"]*+)","([^"]*+)",', 3)
$uText = UBound($aText)

Dim $aOut [$uText/6][6]
For $i=0 To $uText-1 Step 6
  For $j=0 To 5
    $aOut[$i/6][$j]=$aText[$i+$j]
  Next
Next

_ArrayDisplay($aOut)
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:48, 26-05-2010 | #12


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


amel27, работает отлично, но выводит не всё... Я думаю скорее всего из-за того, что в
Цитата morgan1991:
Меняющийся текст1 »
иногда встречаются разные символы, например:
{[}]+=&*(^%)_|\/ и т.д.
Возможно выражение их игнорирует... А в частности заметил, если в тексте есть текст[текст]текст, то он игнорирует эту часть...

-------
Хочу научиться писать драйвера на с++


Отправлено: 13:06, 26-05-2010 | #13


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
иногда встречаются разные символы »
как обычно - давайте нерабочие примеры, менее жесткий вариант:
Код: Выделить весь код
'\[(\d++),(\d++),\["([^"]*+)"\],\[(\d++),"([^"]*+)","([^"]*+)",'

Отправлено: 13:26, 26-05-2010 | #14


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
{"n":4,"d":[[73355227,1274794749,["Необходимо [app]получить двумерный массив:"],[53261465,"jhgf jjj","http://cs386.userapi.com/u53261465/y_hjjg.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354434,1274792979,["morgan1991, дайте рабочий пример в не[app]сколько строчек"],[53261465,"test morgan","http://cs386.userapi.com/u53261465/84_jtfd921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],[73354284,1274792596,["Спасибочки)))))"],[40839431,"Viktoria Test","http://cs580.userapi.com/u40839431/k_gif5913.jpg","c_89cf5a1x:002",1,0],[1411059575]],[73340415,1274730302,["привет,как у[app] тебя дела????"],[53261465,"Alenka Press","http://cs386.userapi.com/u53261465/u_f45f921c.jpg","c_0ef1b41x:001",1,0],[1411059575]],"h":883000002}

-------
Хочу научиться писать драйвера на с++


Отправлено: 13:41, 26-05-2010 | #15


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


morgan1991, у меня последнее выражение нормально отрабатывает... конечно, можно для надежности добить весь блок до закрывающей скобки, но думаю это лишнее:
Код: Выделить весь код
'\[(\d++),(\d++),\["([^"]*+)"\],\[(\d++),"([^"]*+)","([^"]*+)","[^"]*+",\d++,\d++\],\[\d+\]\]'
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:42, 27-05-2010 | #16


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


amel27, спасибо огромное, работает.
А вот ещё иногда бывают такие случаи:
Код: Выделить весь код
[73388045,1274894102,["<a href='http://cs945.userapi.com/u11909801/l_c9f2e05b.png'><img src='http://cs945.userapi.com/u11909801/m_ce4c5ebc.png'/></a>",2,"","http://cs945.userapi.com/u11909801/m_ce4c5ebc.png","http://cs945.userapi.com/u11909801/l_c9f2e05b.png",11909801,222769342],[11909801,"Yevgeny Vladimirovich","http://cs228.userapi.com/u11909801/b_06451668.jpg","c_2234ac1x:001",2,0],[1411059575]],[73377400,1274871984,["[[app_post1830401|a_11909801_4718705_162769015|b0c02new1090000]]"],[11909801,"Yevgeny Vladimirovich","http://cs228.userapi.com/u11909801/b_06451668.jpg","c_2234ac1x:001",2,0],[1411059575]]
Возможно и его одновременно обрабатывать? Тут нужно чтоб приходил, не только текст, должна вернутся строчка:
Код: Выделить весь код
"<a href='http://cs945.userapi.com/u11909801/l_c9f2e05b.png'><img src='http://cs945.userapi.com/u11909801/m_ce4c5ebc.png'/></a>",2,"","http://cs945.userapi.com/u11909801/m_ce4c5ebc.png","http://cs945.userapi.com/u11909801/l_c9f2e05b.png",11909801,222769342

-------
Хочу научиться писать драйвера на с++


Отправлено: 15:57, 27-05-2010 | #17


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
вот ещё иногда бывают такие случаи »
тут два блока разного формата, вот разбор:
Код: Выделить весь код
$sText = '['& _
            '73388045,'& _
            '1274894102,'& _
            '['& _
               '"<a href=''http://cs945.userapi.com/u11909801/l_c9f2e05b.png''><img src=''http://cs945.userapi.com/u11909801/m_ce4c5ebc.png''/></a>",'& _
               '2,'& _
               '"",'& _
               '"http://cs945.userapi.com/u11909801/m_ce4c5ebc.png",'& _
               '"http://cs945.userapi.com/u11909801/l_c9f2e05b.png",'& _
               '11909801,'& _
               '222769342'& _
            '],'& _
            '['& _
               '11909801,'& _
               '"Yevgeny Vladimirovich",'& _
               '"http://cs228.userapi.com/u11909801/b_06451668.jpg",'& _
               '"c_2234ac1x:001",'& _
               '2,'& _
               '0'& _
            '],'& _
            '['& _
               '1411059575'& _
            ']'& _
         '],'& _
         '['& _
            '73377400,'& _
            '1274871984,'& _
            '['& _
               '"[[app_post1830401|a_11909801_4718705_162769015|b0c02new1090000]]"'& _
            '],'& _
            '['& _
               '11909801,'& _
               '"Yevgeny Vladimirovich",'& _
               '"http://cs228.userapi.com/u11909801/b_06451668.jpg",'& _
               '"c_2234ac1x:001",'& _
               '2,'& _
               '0'& _
            '],'& _
            '['& _
               '1411059575'& _
            ']'& _
         ']'
Цитата morgan1991:
нужно чтоб приходил, не только текст, должна вернутся строчка »
в смысле?.. каким элементом массива?.. переформулируйте исходную задачу

Последний раз редактировалось amel27, 28-05-2010 в 17:34.


Отправлено: 17:05, 28-05-2010 | #18


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата amel27:
в смысле?.. каким элементом массива?.. переформулируйте исходную задачу »
Я имел ввиду что не нужно разбивать на части эту часть:
Код: Выделить весь код
"<a href='http://cs945.userapi.com/u11909801/l_c9f2e05b.png'><img src='http://cs945.userapi.com/u11909801/m_ce4c5ebc.png'/></a>",2,"","http://cs945.userapi.com/u11909801/m_ce4c5ebc.png","http://cs945.userapi.com/u11909801/l_c9f2e05b.png",11909801,222769342
Т.е.
Цитата morgan1991:
["Меняющийся текст1"] »
Нужно оставить как есть и запихать в элемент массива.

-------
Хочу научиться писать драйвера на с++


Отправлено: 17:14, 28-05-2010 | #19


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
Нужно оставить как есть и запихать в элемент массива. »
а как быть с кавычками?.. ведь тогда из второго блока получится:
Код: Выделить весь код
["[[app_post1830401|a_11909801_4718705_162769015|b0c02new1090000]]"]
или нужно проверять количество элементов в блоке и в зависимости от этого выщелкивать текст/блок?

Отправлено: 17:38, 28-05-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Регулярные выражения в AutoIt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
регулярные выражения Ginger Вебмастеру 60 21-03-2012 01:11
Java - Регулярные выражения Java ValVlaGen Программирование и базы данных 0 19-10-2009 08:06
Разное - PHP - регулярные выражения: HELP GoldenOrb Программирование и базы данных 10 08-09-2008 16:47
PHP - регулярные выражения: HELP GoldenOrb Вебмастеру 13 18-07-2008 16:05
Регулярные выражения est Хочу все знать 6 02-10-2002 14:17




 
Переход