![]() |
Регулярные выражения в AutoIt
Заранее прошу прощения если темы уже была, поиском не нашол ничего подходящего.
Вообщем проблема в следующем, читал русскую справку (про английскую вообще молчу) и никак не могу понять написание шаблонов для В справке не достаточно понятно как использовать такие шаблоны. + к этому у меня всегда были проблемы с рег. выражениями в других языках... Хотелось бы чтоб ктонибудь объяснить популярно как составлять такие шаблоны. В справке есть таблица специальных символов (Элементы шаблона), но по ней для меня очень сложно составить шаблон. Пример такой: Нужно из текста выковырять все ссылки такого вида: view.php?ad=122887 view.php?ad=12285 view.php?ad=1222287 Меняется только число после = Дак вот вродибы простое выражение, а у меня составило много трудностей. Исходя из справки у меня получился такой шаблон: Но он в корне не правильный, а у меня даже мысли нет почему? Поэтому прошу помощи в освоении регулярных выражениях... |
Цитата:
Код:
StringRegExp($sText, "view.php\?ad=\d+", 3) |
amel27, у меня не работает...
Сделал так и заработало: |
morgan1991, странно, "=" вроде не является метасимволом в такой комбинации :dont-know
|
Точка является метасимволом
В perl это было бы так view\.php\?ad=\d+ Скобки, кстати, в стандартной Regex машине является способом адресации к вхождению, а не только ограничителем |
kim-aa, точно, не заметил... хотя на работу выражения это не повлияло :)
а чтобы не следить за всеми метасимволами можно экранировать всю подстроку: Код:
\Qview.php?ad=\E\d+ |
Цитата:
Может быть имеет смысл ввести в строке поиска выравнивание по границе слова: типа этого \bview\.php\?ad=\d+\b |
Цитата:
Код:
<tr> Цитата:
|
Помогите пожалуйста ещё с таким выражением:
Код:
[цифры меняющиеся1,цифры меняющиеся2,["Меняющийся текст1"],[цифры меняющиеся3,"Меняющийся текст2","ссылка на файл"," Код:
$arr[0][0] = цифры меняющиеся1 Но не работает... :( |
morgan1991, дайте рабочий пример в несколько строчек
|
Код:
{"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} |
morgan1991, хде-то так:
Код:
#include <array.au3> |
amel27, работает отлично, но выводит не всё... Я думаю скорее всего из-за того, что в
Цитата:
{[}]+=&*(^%)_|\/ и т.д. Возможно выражение их игнорирует... А в частности заметил, если в тексте есть текст[текст]текст, то он игнорирует эту часть... |
Цитата:
Код:
'\[(\d++),(\d++),\["([^"]*+)"\],\[(\d++),"([^"]*+)","([^"]*+)",' |
Код:
{"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} |
morgan1991, у меня последнее выражение нормально отрабатывает... конечно, можно для надежности добить весь блок до закрывающей скобки, но думаю это лишнее:
Код:
'\[(\d++),(\d++),\["([^"]*+)"\],\[(\d++),"([^"]*+)","([^"]*+)","[^"]*+",\d++,\d++\],\[\d+\]\]' |
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 |
Цитата:
Код:
$sText = '['& _ Цитата:
|
Цитата:
Код:
"<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 Цитата:
|
Цитата:
Код:
["[[app_post1830401|a_11909801_4718705_162769015|b0c02new1090000]]"] |
Цитата:
Код:
<a href='http://cs945.userapi.com/u11909801/l_c9f2e05b.png'><img src='http://cs945.userapi.com/u11909801/m_ce4c5ebc.png'/></a> Код:
[[app_post1830401|a_11909801_4718705_162769015|b0c02new1090000]] |
Цитата:
Код:
'\[(\d++),(\d++),\["([^"]*+)"(?:,"[^"]*+"|,\d+)*+\],\[(\d++),"([^"]*+)","([^"]*+)"(?:,"[^"]*+"|,\d+)*+],\[\d+(?:,"[^"]*+"|,\d+)*+\]\]' |
amel27, спасибо огромное, всё отлично функционирует.
|
Очередной раз прошу помощи, т.к. ну никак не могу сделать сам.
Есть переменная $test, которая содержит html страницы. Нужно найти в ней самый последний тег </div> и удалить всё что находится после него. |
Код:
StringRegExpReplace($test, '(^.*</div>).*+', '\1') |
amel27, к сожалению не работает
|
Цитата:
|
Вложений: 1
прикладываю пример кода.
Извиняюсь, неправильно сказал, нужно убрать всё после строки: Код:
Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV> Код:
</BODY></HTML> |
Решил сам:
Код:
$test = StringRegExpReplace($test, "Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV>(?s)(.*)", "Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV>" & @CRLF & "</BODY></HTML>") |
Цитата:
Код:
$test = StringRegExpReplace($test, "(?s)(.+Следуйте инструкциям.+</DIV></DIV></DIV>).+", "\1"& @CRLF & "</BODY></HTML>") |
Цитата:
|
Цитата:
А так еще чуть проще : Код:
$test = StringRegExpReplace($test, "(?s)(.+Следуйте инструкциям.+?</DIV></DIV></DIV>).+(</BODY></HTML>)", "\1"& @CRLF & "\2") |
Цитата:
хотя такое решение мне понравилось: Код:
"\1"& @CRLF & "\2" |
Время: 18:32. |
Время: 18:32.
© OSzone.net 2001-