Что нового

[RegExp] Поиск ссылки по части слова (маске) на сайте

BSoD404

Новичок
Сообщения
3
Репутация
0
Приветствую всех форумчан.

Есть например сайт http://autoit-script.ru/ на котором нужно найти URL-ссылку по части слова (маске).
Допустим, что ищем http://autoit-script.ru/Themes/default/css/scrolling.css, то нашей маской будет слово scrolling.css.

Имеется следующий код, который выводит все URL-ссылки:
Код:
#include <Array.au3>

$_sURL = "http://autoit-script.ru/"
$Read = BinaryToString(InetRead($_sURL), 4)
$Answer = StringRegExp($Read, '(?si)(?:.*?)?(https?://[\w.:]+/?(?:[\w/?&=.~;\-+!*_#%])*)', 3)
_ArrayDisplay($Answer)


Так как в регулярных выражениях я не силен, то не имею представления как изменить выражение
Код:
$Answer = StringRegExp($Read, '(?si)(?:.*?)?(https?://[\w.:]+/?(?:[\w/?&=.~;\-+!*_#%])*)', 3)

добавив в него маску.

Прошу, помогите.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
BSoD404 [?]
нужно найти URL-ссылку по части слова (маске).
Код:
$sMask = 'scrolling.css'
For $i = 0 To UBound($Answer) -1
   If StringInStr($Answer[$i], $sMask) Then
	  ConsoleWrite(StringFormat('! %s\r\n', $Answer[$i]))
	  ExitLoop
   EndIf
Next
 
Автор
B

BSoD404

Новичок
Сообщения
3
Репутация
0
Garrett сказал(а):
BSoD404 [?]
нужно найти URL-ссылку по части слова (маске).
Код:
$sMask = 'scrolling.css'
For $i = 0 To UBound($Answer) -1
   If StringInStr($Answer[$i], $sMask) Then
	  ConsoleWrite(StringFormat('! %s\r\n', $Answer[$i]))
	  ExitLoop
   EndIf
Next

Garrett благодарю за участие, но это не совсем то.
Нужно получение именно с помощью StringRegExp, а не перебором.

Хотя, если ты сможешь показать как реализовать в твоем примере из URL-ссылки http://autoit-script.ru/Themes/default/css/scrolling.css, вот такую маску: default*scrolling.css
(под * естественно понимать /css/), то пойдет.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Код:
$maska = 'scrolling.css'
$Answer = StringRegExp($Read , 'https?:\S*' &$maska&'\S*', 3)



Добавлено:
Сообщение автоматически объединено:

BSoD404 [?]

Будет так default.*?scrolling\.css
Все точки нужно экранировать так \.
 
Автор
B

BSoD404

Новичок
Сообщения
3
Репутация
0
В итоге получилось следующее:

Код:
#include <Array.au3>

$_sURL = "http://autoit-script.ru/"
$sMask = '.*?scrolling\.css'
;$sMask = '.*?default.*?scrolling\.css'

$Read = BinaryToString(InetRead($_sURL), 4)
$Answer = StringRegExp($Read , '(https?://[^.\s]+(?:\.[^.\s]+)*\.(?:' & $sMask & '))', 3)
_ArrayDisplay($Answer, '$Answer')


Ответ по маске: '.*?scrolling\.css' ==> http://autoit-script.ru/Themes/default/css/scrolling.css
Ответ по маске: '.*?default.*?scrolling\.css' ==> http://autoit-script.ru/Themes/default/css/scrolling.css

Всем - огромное "СПАСИБО".
 
Верх