Главная / Программирование /
Регулярные выражения Perl и их применение / Тест 1
Регулярные выражения Perl и их применение - тест 1
Упражнение 1:
Номер 1
Какие операторы удаляют все пробельные символы только в начале текста?
Ответ:
 (1) s/^ +//m 
 (2) s/^\s+//g 
 (3) s/^ *//m 
 (4) s/^\s*//s 
 (5) s/\s+?// 
 (6) s/\s*?// 
 (7) s/^[\t\r\3]*// 
Номер 2
Какие операторы удаляют все пробельные символы только в конце текста?
Ответ:
 (1) s/\s+$//m 
 (2) s/\s*$//m 
 (3) s/\s*$// 
 (4) s/\s+\Z// 
 (5) s/\s+?$// 
 (6) s/\s*\z// 
 (7) s/\s*?\Z// 
Номер 3
Какие операторы удаляют все пробельные символы только в начале каждой строки текста?
Ответ:
 (1) s/^ +//m 
 (2) s/^ *//m 
 (3) s/^\s+//g 
 (4) s/^\s*//gms 
 (5) s/^\s+?//g 
 (6) s/^\s*?//g 
 (7) s/^[\r\3\t]+//g 
Номер 4
Какие операторы удаляют все пробельные символы только в конце каждой строки текста?
Ответ:
 (1) s/ +$//m 
 (2) s/\s*//m 
 (3) s/\s+\Z//g 
 (4) s/\s*$//gms 
 (5) s/\s+?$//g 
 (6) s/\s*?$//g 
 (7) s/\s*?//g 
Упражнение 2:
Номер 1
Какое регулярное выражение соответствуют всей строке '-123.456', которая содержит число?
Ответ:
 (1) /\d+.\d+/ 
 (2) /^\-\d+\.\d*$/ 
 (3) ^\-?\d+\.\d+$/ 
 (4) /^[-.\d]+$/ 
Номер 2
Какие регулярные выражения соответствуют всей строке 'abc123'?
Ответ:
 (1) /\w+\d/ 
 (2) /\d*\w+/ 
 (3) /\w*\d+/ 
 (4) /[a-c\d]*/ 
Номер 3
Какие регулярные выражения соответствуют всей строке '1a2b3c+'?
Ответ:
 (1) /\w++/ 
 (2) /[\d\w]++/ 
 (3) /[\w+]*/ 
 (4) /\S+/ 
Упражнение 3:
Номер 1
Какие регулярные выражения захватят в $1 только подстроку 'abc -123' в строке 'xyz abc -123 uvw'?
Ответ:
 (1) /\w+(\w+\s+-\d+)/ 
 (2) /[\w\s]+(\w+\s+[-\d]+)/ 
 (3) /\S+\s+(\S+\s+[-\d]+)/ 
Номер 2
Какие регулярные выражения захватят в $1 только подстроку '123 a-bc' в строке 'xyz 123 a-bc uvw'?
Ответ:
 (1) /(\d+[\s\w-]+)/ 
 (2) /(\d+\s+[\w-]*)/ 
 (3) /\S+\s+(\d+\s*[a-bc]+)/ 
Номер 3
Какие регулярные выражения захватят в $1 только подстроку 'ab+c 1-23' в строке 'xyz ab+c 1-23 uvw'?
Ответ:
 (1) /(a[\w+]+\s+[\d-]+)/ 
 (2) /\S+\s+(\w+\+\w+\s+\d-\d*)/ 
 (3) /\S+\s+(\w+\+\w+\s+\d-\d*?)/ 
Упражнение 4:
Номер 1
В тексте надо захватить в $1 фрагмент (может и пустой) от первых до вторых кавычек. Какие операторы делают это правильно?
Ответ:
 (1) /"(.+)"/ 
 (2) /"(.+)"/s 
 (3) /"(.*)"/ 
 (4) /"(.*?)"/s 
 (5) /"([^"]+)"/ 
 (6) /"([^"]*)"/ 
Номер 2
В тексте надо захватить в $1 фрагмент от предпоследних до последних кавычек. Какие операторы делают это правильно?
Ответ:
 (1) /"([^"]*)"[^"]*/ 
 (2) /"([^"]*)"[^"]*$/ 
 (3) /[^"]+"(.+)"/s 
 (4) /.*"([^"]*)"/s 
Номер 3
В тексте надо захватить в $1 фрагмент от первых до третьих кавычек. Какой оператор делает это правильно?
Ответ:
 (1) /"([^"]*"[^"]*)"/ 
 (2) /"([^"]*"[^"]+)"/ 
 (3) /"(.*".*)"/ 
 (4) /"(.*".*)"/s 
 (5) /"(.|")"/s 
Упражнение 5:
Номер 1
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в $1 имя файла. Какие операторы делают это правильно?
Ответ:
 (1) /.*\(.+)/ 
 (2) /.*\\(.+)/ 
 (3) /.+\\(.*)/ 
 (4) /.*?\\(.*)/s 
 (5) /.*\\(.*?)/s 
 (6) /\\(.*)/s 
Номер 2
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в $1 имя диска. Какие операторы делают это правильно?
Ответ:
 (1) /(.+)\\/ 
 (2) /(.+)\/ 
 (3) /([^\]+)\\/ 
 (4) /([^\\]+)\\/ 
 (5) /^([^\\]*)\\/ 
 (6) /(.+?)\\/ 
Номер 3
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в $1 весь путь без имени диска и имени файла. Какие операторы делают это правильно?
Ответ:
 (1) /[^:]*:(.*\\)/ 
 (2) /[^:]*?:(.*\\)/ 
 (3) /[^:]*:(.*?\\)/ 
 (4) /[^\\]+(.*?\\)/ 
 (5) /[^\\]+(.*\\)/s 
 (6) /^[^\\]+(.*\\)/ 
Упражнение 6:
Номер 1
Какие регулярные выражения захватят в $1 подстроку '-123abc', а в $2 - подстроку '1+2abc' из строки '1-2ab -123abc a1 1+2abc'?
Ответ:
 (1) /([-123\w]+)\s+(\S+)/ 
 (2) /\S+\s+(\S+)\s+(\S+)/ 
 (3) /(\S+c)\s+\S+\s+([+\w]*)/ 
Номер 2
Какие регулярные выражения захватят в $1 подстроку 'yahoo!', а в $2 - подстроку 'a_bc' из строки 'ab!c yahoo! a_bc'?
Ответ:
 (1) /([\w!]+)\s+(\S+)/ 
 (2) /([\w]+!)\s+(\S+)/ 
 (3) /([\w]+!)\s+(\w+)/ 
Номер 3
Какие регулярные выражения захватят в $1 подстроку 'ab?c', а в $2 - подстроку 'abc?' из строки '12?a ab?c abc?'?
Ответ:
 (1) /([\w?]+)\s+(\S+)/ 
 (2) (a[\w?]+\s+)(\S+) 
 (3) /([a-z]+[?\w]*)\s+(\S+)/