[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задачи для любителей регулярок
Страницы: 1, 2
Placido
Расширю тему. Буду сюда выкладывать интересные задачи для любителей регулярок. Кто желает размять мозги - милости прошу в эту ветку форума.

----------------
Original post

Вчера на хабре появился интересный пост http://habrahabr.ru/post/167015/ - если нескольких словах, то это список задач для любителей регулярок. Там используются регулярки javascript, движок которых существенно обрезан по сравнению с PCRE. Поэтому на PHP эти задачи выполнить будет проще. Если у кого-то будет желание попробовать решить их на PHP, просьба выкладывать решения в эту тему.
Placido
Задача №1. Слова-палиндромы

Итак, начнем. Необходимо написать регулярку, которая будет выбирать из текста все слова-палиндромы, то есть такие, которые читаются справа-налево и слева-направо одинаково, например, "ротор", "фууф". Регистр игнорируем, то есть "Malayalam" тоже считается. Минимальная длина слова - две буквы. Для теста можете использовать список английских слов под спойлером (около 350 слов, из которых 54 - палиндромы).
Удачи!

Свернутый текст
coadaptation, intercrural, creme, threepence, venectasia, unregistered, Kazak, vitalism, modeler, lithate, cinnamomic, fractum, unto, Berriasian, chairborne, Merc, prudery, ferrospinel, pullup, grandis, storeroom, ecce, anna, hypogravics, elytrorrhaphy, gait, systematics, hecatontacismyriogon, gurdy, alla, trichoglossia, humanities, infrastructure, Osmunda, kryogen, EEMA, mesaortitis, acidogen, christcross, Valerianas, miostagmic, sluicing, minim, AA, kook, esse, roentgenologic, stallage, nephrography, GVW, salience, impanelled, arsinal, patelloid, appalling, fucivorous, glimmer, bullwheel, atta, big, godunov, alula, radiophonic, soupbone, periscope, urethogram, madam, cheirarthritis, ICP, alneite, Delhi, withered, nisin, dood, Grenada, dominical, deoxidise, abbreviator, idillic, telebanking, terret, garshin, Lamq, spongious, darkmans, pitching, irrotational, halfwitted, Abba, piffling, facts, Widmanstatten, backout, cementite, boatbuilding, tradescantia, Priestley, deed, malhypoxia, pulsatile, scrod, antistrophe, americanize, keek, kilolitre, sarcothlasis, monogene, proprioceptive, easterner, TOE, multistatic, insinuation, indignation, chloritization, autoclastic, radar, lepidoma, refer, bornylacetate, oxidize, Hellenic, hypercryalgesia, murdrum, diiodated, poop, nonergodic, Natan, copiously, afterdark, kazak, clavicle, boob, norm, tinnery, quinaldinic, europia, Saxonism, kaolinosis, effervescing, macroseismic, gripingly, skerljevo, accelerating, Northrop, pooch, defeminization, phonetism, exemplum, complot, deliriant, Anona, undershrub, NCD, precessional, oozy, swipe, duodecagon, branchial, miction, encephalalgia, lave, redunancy, hibernaculum, tucket, pentynoic, bashing, noon, Adda, peep, spermicide, waymark, sodiumthiosulphate, Veev, harpooner, airbus, AppWare, Louisiana, crunchy, rever, rotor, equicontinuity, tantrums, paleface, bandaging, decarburizate, anabatic, photostore, supporter, hydrogenator, Beeb, epact, level, catches, deviationism, Camden, faultily, isthmian, maam, SCS, postoptimality, melanoleukoderma, exsitu, papilla, unfriended, lurgy, overloading, esogastritis, valleypoint, invariant, incapacitating, algologist, vibrohammer, repairing, angioid, Transvaal, teocallus, playhouse, lightboat, cacatory, nomologist, heron, marram, Rae, preterition, quartzose, addressness, diskal, silhouetting, procurator, bequeathal, zaptiah, BOPPD, retrospondylolisthesis, seminoma, organzine, parazone, camaraderie, nonprintable, blameworthiness, bioshere, bedlamite, seismics, Sufus, disulpho, ette, Crotalaria, otto, ratify, pseudospiral, succus, gendarmerie, Budorcas, carinate, oppo, Agrostemma, toot, kayak, shortsighted, bromeline, tympanomandibular, pneumoperitoneum, gestapo, topmost, rotator, advisee, assaultiveness, schilling, waggonette, lampe, Chomsky, cortlandite, stumps, desert, peeps, Ababa, rufescent, Fartlek, oceanaut, Pedro, electroendosmosis, premartingale, microcopy, Smyrnium, hopelessly, columella, Laval, cappelenite, diazotability, oink, Madrid, flation, fluorescer, reinnervation, morsel, Kigali, unlet, contemporarily, tetramethylate, Eritrea, sunless, trirectangular, drawhook, pyrazotol, teet, sublessee, metastatement, antielectron, engulf, maverick, cognition, stereognosis, transversion, nunatak, avian, James, civic, petrolift, nickelian, whirlybird, multicart, Sunnus, disabler, reviver, shameface, Malayalam, osteoblastoma, sequin, unanswerable, subway, counterwork, atopic, cupron, filoform, myoalbumin, nationalization, archfool, resister, cynnamoyl, alala, polycotyledon, jobbish, recite, margaritiferous, thermoinjector, uncorrectable, outstay, foredate, anoxiate, holic, confrication, Hannah, rib, hemivagotomy, xanthating, aieia, tenet, interslot, longitudinally

Задача №2. Вложенные теги

Снова задача с рекурсией. Нужно составить регулярное выражение, которое будет выбирать тег <div> с определенным id, вместе со всеми вложенными тегами, а также его закрывающий тег. Глубина вложенности произвольная. Тестируем на следующем куске html:

Свернутый текст
<div>test</div>
<div
id="1">
<a
href="test">
<div
id="2">
test
<div id="3">
test
</div>
test
<div id="4">
test
</div>
</div>
</a>
<a
href="test">
<div
id="22">
test
<div id="3">
<div>
test</div><div>test</div><div>test</div>
test
<div>
<div
id="33">
<div>
test</div><div>test</div><div>test</div>
test
<div>
<div
id="55">
test
<div id="56">
test
</div>
</div>
</div>
</div>
</div>
</div>

test
<div id="4">
test
</div>
</div>
</a>
</div>
<div
id="5">
test
</div>

Два тестовых задания. Необходимо выбрать регулярным выражением:
1) <div> с id="22" вместе со всеми вложенными тегами;
2) <div> с id="1" вместе со всеми вложенными тегами.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.