Архив задач

2013 [9-10] Фильтр

Вася предоставил соседу Пете доступ к своей домашней Wi-Fi сети и сообщил ему ключ. Хитрый Петя захотел узнать имена всех учётных записей, которыми пользуется Вася на сайтах знакомств. Для перехвата данных он решил использовать специальную программу (сниффер). Петя очень ленив и не хочет проверять все перехваченные данные вручную, поэтому он воспользовался возможностями сниффера по анализу содержимого html-страниц с применением регулярных выражений. Помогите Пете написать регулярное выражение, позволяющее выделить искомый логин.

Код типовой страницы авторизации имеет следующий вид:

$text = '

<html>

<head>

<title>Нашсайтзнакомствлучший</title>

</head>

<body>

<form>

<input type="hidden" name="login"

value="vasyaisthebestofthebest@mail.ru "/>

<input type="text" id="user56789" name="login"

value="vasyaisthebestofthebest@mail.ru" class="loginstring"/>

<input type="hidden" name="password" value="bestman12"/>

<input type="password"  name="password" class="passwordstring"/>

<input type="submit" name="action" value="Войти на сайт!" />

</form>

</body>

</html>';

 

Комментарий

Регулярные выражения предоставляют возможности для описания подстрок определенного вида.Для формирования регулярного выражения используются следующие элементы:

1. символ – например, «а»

2. любой символ – обозначается «.»

3. пробельный символ – обозначается «\s»

4. диапазон символов – обозначается «[]».Например:

[abc] – любая из букв a, b, c

[a-z0-9] – любая из малых букв латинского алфавита и цифра

5. отрицание диапазона:

[^a-z5] – не маленькая буква латинского алфавита и цифра 5

 

Для указания количества вхождений используются кванторы:

«?» означает «0 или 1 шт.»

«+» означает «>= 1 шт.» , причем берется как можно большее количество символов

«+?» означает «>= 1 шт.» , причем берется как можно меньшее количество символов

«*» означает «>= 0 шт.», причем берется как можно большее количество символов

«*?» означает «>= 0 шт.», причем берется как можно меньшее количество символов

 «{5}» означает «5 шт.»

«{5, 8}» означает «от 5 до 8 шт.»

Например, «a*» – любое количество идущих подряд символов «a».

 

Для извлечения подстроки используются круглые скобки, например, выражение: ([0-9]+)\s+([0-9]+) сохраняет из строки «мои числа 45 567 234 56» числа: «45» и «567».