Войти

Показать полную графическую версию : [решено] Регулярные выражения в AutoIt


Страниц : 1 [2]

morgan1991
28-05-2010, 19:07
а как быть с кавычками?.. ведь тогда из второго блока получится: »
тогда думаю можно выковыривать только вот эту часть:
<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]]
А остальное можно отбросить.

amel27
29-05-2010, 08:51
думаю можно выковыривать только вот эту часть »
только первый элемент?.. тогда так:
'\[(\d++),(\d++),\["([^"]*+)"(?:,"[^"]*+"|,\d+)*+\],\[(\d++),"([^"]*+)","([^"]*+)"(?:,"[^"]*+"|,\d+)*+],\[\d+(?:,"[^"]*+"|,\d+)*+\]\]'

morgan1991
30-05-2010, 14:39
amel27, спасибо огромное, всё отлично функционирует.

morgan1991
20-10-2010, 17:04
Очередной раз прошу помощи, т.к. ну никак не могу сделать сам.
Есть переменная $test, которая содержит html страницы.
Нужно найти в ней самый последний тег </div> и удалить всё что находится после него.

amel27
21-10-2010, 03:00
StringRegExpReplace($test, '(^.*</div>).*+', '\1')

morgan1991
21-10-2010, 13:44
amel27, к сожалению не работает

amel27
21-10-2010, 13:57
не работает »пост #14

morgan1991
21-10-2010, 16:41
прикладываю пример кода.
Извиняюсь, неправильно сказал, нужно убрать всё после строки:
Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV>
И затем в конец дописать:
</BODY></HTML>

morgan1991
21-10-2010, 22:39
Решил сам:

$test = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($test, "Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV>(?s)(.*)", "Следуйте инструкциям. </P><INPUT value=Оплатить type=submit> </FORM></DIV></DIV></DIV>" & @CRLF (http://www.autoitscript.com/autoit3/docs/macros.htm#@CRLF) & "</BODY></HTML>")

gregaz
22-10-2010, 07:34
Решил сам: »

Можно упростить выражение :

$test = StringRegExpReplace($test, "(?s)(.+Следуйте инструкциям.+</DIV></DIV></DIV>).+", "\1"& @CRLF & "</BODY></HTML>")

morgan1991
22-10-2010, 15:14
Можно упростить выражение »
для меня это наоборот усложнить, но сократить... :)

gregaz
22-10-2010, 16:28
для меня это наоборот усложнить, но сократить.. »

Почему ? По крайней мере не стоит повторять 2 раза текстовый фрагмент , ведь достаточно заменить его на его эквивалент : "\1"

А так еще чуть проще :

$test = StringRegExpReplace($test, "(?s)(.+Следуйте инструкциям.+?</DIV></DIV></DIV>).+(</BODY></HTML>)", "\1"& @CRLF & "\2")

morgan1991
22-10-2010, 17:59
Почему ? »
ну когда я буду знать регулярные выражения на отлично, тогда может и будет проще, а пока...
хотя такое решение мне понравилось:
"\1"& @CRLF & "\2"




© OSzone.net 2001-2012