игра брюс 2048
Главная / Программирование / Регулярные выражения Perl и их применение / Тест 8

Регулярные выражения Perl и их применение - тест 8

Упражнение 1:
Номер 1
Имеются следующие адреса электронной почты: a-b.c@def.com,  a+b@def.co.uk,  a$b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?

Ответ:

 (1) [\w\$+.-]+\@[.\w]+ 

 (2) [\w\$+-.]+\@[.\w]+ 

 (3) [\w$+\.\-]+\@[.\w]+ 


Номер 2
Имеются следующие адреса электронной почты: ab.c@def.com,  a+b@de-f.co.uk,  a-b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?

Ответ:

 (1) [\w.+-]+\@[.\w-]+ 

 (2) [\w+-.]+\@[.\w-]+ 

 (3) [\w$.-+]+\@[.\w-]+ 


Номер 3
Имеются следующие адреса электронной почты: ab.c@def.com,  a+b@de-f.co.uk,  a-b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?

Ответ:

 (1) [a-z.+]+\@[.\w-]+ 

 (2) [A-z+-.]+\@[.\w-]+ 

 (3) [A-z+.-]+\@[.\w-]+ 


Упражнение 2:
Номер 1
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href  =  " mailto:   a+b\@de-f.co.uk  "   >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?

Ответ:

 (1) /<a\s+href\s*=\s*['"]?mailto:([\w+.-]+\@[.\w-]+)/g 

 (2) /<a\s+href\s*=\s*['"\s]*mailto:\s*([\w+.-]+\@[.\w-]+)/g 

 (3) /<a\s+href\s*=.*?mailto:\s*([\w+.-]+\@[.\w-]+)/g 


Номер 2
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href  =  " mailto:   a+b\@de-f.co.uk  "   >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?

Ответ:

 (1) /href\s*=.*mailto:\s*([\w+.-]+\@[.\w-]+)/g 

 (2) /href\s*=.*?mailto:\s*([\w+.-]+\@[.\w-]+)/g 

 (3) /href\s*=.*?mailto:\s*?([\w+.-]+\@[.\w-]+)/g 


Номер 3
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href  =  " mailto:   a+b\@de-f.co.uk  "   >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?

Ответ:

 (1) /:.*([\w+.-]+\@[.\w-]+)/g 

 (2) /:.*?([\w+.-]+\@[.\w-]+)/g 

 (3) /:\s*([\w+.-]+\@[.\w-]+)/g 


Упражнение 3:
Номер 1
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?

Ответ:

 (1) /href=.*?(?:mailto:)?(\S+)>/g 

 (2) /href=.*?(?:mailto:)?(\S+?)>/g 

 (3) /href=.*?(?:mailto:)?([^>"]+)>/g 


Номер 2
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?

Ответ:

 (1) /href=.*(?:mailto:)?([^>"]+)>/g 

 (2) /href=(?:"mailto:)?([^>"]+)(?:"|>)/g 

 (3) /href=(?:"mailto:)?([^>"]+)[">]/g 


Номер 3
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?

Ответ:

 (1) /href="?(?:mailto:)?([^>"]+)[">]/g 

 (2) /href=.*?(?::)?([^>"]+)[">]/g 

 (3) /href=.*?(?:mailto:)?([^>"]+)["]/?> 


Упражнение 4:
Номер 1
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?

Ответ:

 (1) print "$1\@$2" if /\@.*?=.([^'"]+)[^'"]+['"]([^'"]+)/ 

 (2) print "$1\@$2" if /\@.*?=.([^'"]+)[^'"]+['"]([^'"]+)/s 

 (3) print "$1\@$2" if /\@.*?=.([^'"]+).[^'"]+['"]([^'"]+)/s 


Номер 2
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?

Ответ:

 (1) print "$1\@$2" if /\@.*=.([^'"]+).[^'"]+['"]([^'"]+)/s 

 (2) print "$1\@$2" if /\@.*=.([^'"]+).[^'"]+.([^'"]+)/ 

 (3) print "$1\@$2" if /\@[^=]+=.([^'"]+).[^'"]+.([^'"]+)/ 


Номер 3
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?

Ответ:

 (1) print "$1\@$2" if /\@[^=]+=.*?([^'"]+).[^'"]+.([^'"]+)/ 

 (2) print "$1\@$2" if /\@[^=]+=.*?([^'"]+).+?[^'"]+.([^'"]+)/ 

 (3) print "$1\@$2" if /\@[^=]+=.([^'"]+).[^'"]+.+([^'"]+)/ 


Упражнение 5:
Номер 1
В переменной $_ находится HTML-страница. Надо проверить, есть ли у этой страницы часть head, и если есть, то есть ли внутри контейнера <head> </head> тег <base href="…">. Если он есть, то переменной $base надо присвоить этот URL из части head документа. Если в head нет тега base, то ничего делать не надо. Пример текста страницы:<html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?

Ответ:

 (1) $base=$1 if m#<head[^>]*>.*<base\s+href\s*=\s*['"]?([^'">\s]+)#i 

 (2) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is 

 (3) $base=$1 if m#<head[^>]*>(?>(?!<base).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is 


Номер 2
В переменной $_ находится HTML-страница. Надо проверить, есть ли у этой страницы часть head, и если есть, то есть ли внутри контейнера <head> </head> тег <base href="…">. Если он есть, то переменной $base надо присвоить этот URL из части head документа. Если в head нет тега base, то ничего делать не надо. Пример текста страницы:<html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?

Ответ:

 (1) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is 

 (2) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)"#is 

 (3) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'"]+)#is 


Номер 3
В переменной $_ находится HTML-страница. Надо проверить, есть ли у этой страницы часть head, и если есть, то есть ли внутри контейнера <head> </head> тег <base href="…">. Если он есть, то переменной $base надо присвоить этот URL из части head документа. Если в head нет тега base, то ничего делать не надо. Пример текста страницы:<html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?

Ответ:

 (1) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]([^'">\s]+)#is 

 (2) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?(?:[^'">\s]+)#is 

 (3) $base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is 


Упражнение 6:
Номер 1
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?

Ответ:

 (1) print join "\n", m#<a\s+href=.*?(http://[^"]+)# 

 (2) print join "\n", m#<a\s+href=.*(http://[^"]+)#g 

 (3) print join "\n", m#<a\s+href=.*?(http://[^"]+)#gi 


Номер 2
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?

Ответ:

 (1) print join "\n", !<a\s+href=.*(http://[^"]+)!g; 

 (2) print join "\n", m!<a\s*href=.*?(h.+)"!g; 

 (3) print join "\n", m!<a\s*href=.*?(h.+?)"!g; 


Номер 3
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?

Ответ:

 (1) print join "\n", /<a\s+href=.*(http://[^"]+)/g 

 (2) print join "\n", m/<a\s+href=.*(http://[^"]+)/g 

 (3) print join "\n", m!<a\s+href=.*(http://[^"]+)!g 




Главная / Программирование / Регулярные выражения Perl и их применение / Тест 8