-
Notifications
You must be signed in to change notification settings - Fork 0
/
pregex.py
executable file
·14 lines (10 loc) · 11.1 KB
/
pregex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /usr/bin/env python3
import re
import sys
import codecs
dotno = re.compile(r"""((?:[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e](?:[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e]|-){0,61}[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e]|(?:[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e]|[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e](?:[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e]|-){0,61}[a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e])\.(?:aa|aarborte|aejrie|afjord|agdenes|ah|akershus|aknoluokta|akrehamn|al|alaheadju|alesund|algard|alstahaug|alta|alvdal|amli|amot|andasuolo|andebu|andoy|ardal|aremark|arendal|arna|aseral|asker.ah|asker|askim|askoy|askvoll|asnes|audnedal|aukra|aure|aurland|aurskog-holand|aust-agder|austevoll|austrheim|averoy|badaddja|bahcavuotna|bahccavuotna|baidar|bajddar|balat|balestrand|ballangen|balsfjord|bamble|bardu|barum|batsfjord|bearalvahki|beardu|beiarn|berg|bergen.hl|bergen|berlevag|bievat|bindal|birkenes|bjerkreim|bjugn|bo.nordland|bo.telemark|bodo|bokn|bomlo|bremanger|bronnoy|bronnoysund|brumunddal|bryne|bu|budejju|buskerud|bygland|bykle|cahcesuolo|davvenjarga|davvesiida|davvi-trondelaga|deatnu|dielddanuorri|divtasvuodna|divttasvuotna|donna|dovre|drammen|drangedal|drobak|dyroy|egersund|eid|eidfjord|eidsberg|eidskog|eidsvoll|eigersund|elverum|enebakk|engerdal|etne|etnedal|evenassi|evenes|evje-og-hornnes|farsund|fauske|fedje|fet|fetsund|fhs|finnmark|finnmarku|finnoy|fitjar|fjaler|fjell|fla|flakstad|flatanger|flekkefjord|flesberg|flora|floro|fm|folkebibl|folldal|forde|forsand|fosnes|frana|fredrikstad|frei|frogn|froland|frosta|froya|fuoisku|fuossko|fusa|fylkesbibl|fyresdal|gaivuotna|galsa|gamvik|gangaviika|gaular|gausdal|giehtavuoatna|gildeskal|giske|gjemnes|gjerdrum|gjerstad|gjesdal|gjovik|gloppen|gol|gran|grane|granvin|gratangen|grimstad|grong|grue|gs.aa|gs.ah|gs.bu|gs.fm|gs.hl|gs.hm|gs.mr|gs.nl|gs.nt|gs.of|gs.ol|gs.oslo|gs.rl|gs.sf|gs.st|gs.tm|gs.tr|gs.va|gs.vf|gulen|guovdageaidnu|ha|habmer|hadsel|hagebostad|halden|halsa|hamar|hamaroy|hammarfeasta|hammerfest|hapmir|haram|hareid|harstad|hasvik|hattfjelldal|haugesund|hedmark|hemne|hemnes|hemsedal|herad|heroy.more-og-romsdal|heroy.nordland|hitra|hjartdal|hjelmeland|hl|hm|hobol|hof|hokksund|hol|hole|holmestrand|holtalen|honefoss|hordaland|hornindal|horten|hoyanger|hoylandet|hurdal|hurum|hvaler|hyllestad|ibestad|idrett|inderoy|iveland|ivgu|jan-mayen|jessheim|jevnaker|jolster|jondal|jorpeland|kafjord|karasjohka|karasjok|karlsoy|karmoy|kautokeino|kirkenes|klabu|klepp|kommune|kongsberg|kongsvinger|kopervik|kraanghke|kragero|kristiansand|kristiansund|krodsherad|krokstadelva|kvafjord|kvalsund|kvam|kvanangen|kvinesdal|kvinnherad|kviteseid|kvitsoy|laakesvuemie|lahppi|langevag|lardal|larvik|lavagis|lavangen|leangaviika|lebesby|leikanger|leirfjord|leirvik|leka|leksvik|lenvik|lerdal|lesja|levanger|lier|lierne|lillehammer|lillesand|lindas|lindesnes|loabat|lodingen|lom|loppa|lorenskog|loten|lulli-trondelaga|lund|lunner|luroy.nl|luroy|luster|lyngdal|lyngen|malatvuopmi|malselv|malsoy|malvik|mandal|marker|marnardal|masfjorden|masoy|matta-varjjat|meland|meldal|melhus|meloy|meraker|midsund|midtre-gauldal|mjondalen|moareke|modalen|modum|mo-i-rana|molde|more-og-romsdal|mosjoen|moskenes|moss|moss.of|mr|muosat|museum|naamesjevuemie|namdalseid|namsos|namsskogan|nannestad|naroy|narviika|narvik|naustdal|navuotna|nedre-eiker|nes.akershus|nes.buskerud|nesna|nesodden|nesoddtangen|nesseby|nesset|nic|nissedal|nittedal.ah|nittedal|nl|nord-aurdal|norddal|nord-fron|nordkapp|nordland|nordlanda|nord-odal|nordreisa|nordre-land|nord-trondelag|nore-og-uvdal|notodden|notteroy|nt|odda|of|oksnes.nl|oksnes|ol|omasvuotna|oppdal|oppegard|oppland|orkanger|orkdal|orland|orskog|orsta|os.hedmark|os.hordaland|osen|oslo|osoyro|osteroy|ostfold|ostre-toten|overhalla|ovre-eiker|oyer|oygarden|oystre-slidre|porsanger|porsangu|porsgrunn|priv|rade|radoy|rahkkeravju|raholt|raisa|rakkestad|ralingen|rana|randaberg|rauma|re|rendalen|rennebu|rennesoy|rindal|ringebu|ringerike|ringsaker|risor|rissa|rl|roan|rodoy|rogaland|rollag|romsa|romskog|roros|rost|royken|royrvik|ruovat|rygge|salangen|salat|saltdal|samnanger|sande.more-og-romsdal|sande.vestfold|sande.xn--mre-og-romsdal-qqb|sande.m\xf8re-og-romsdal|sandefjord|sandefjord.vf|sandnes|sandnessjoen|sandoy|sarpsborg|sauda|sauherad|sel|selbu|selje|seljord|sf|siellak|sigdal|siljan|sirdal|skanit|skanland|skaun|skedsmo|skedsmokorset|ski|skien|skierva|skiptvet|skjak|skjervoy|skodje|slattum|smola|snaase|snasa|snillfjord|snoasa|sogndal|sogne|sogn-og-fjordane|sokndal|sola|solund|somna|sondre-land|songdalen|sor-aurdal|sorfold|sor-fron|sor-odal|sorreisa|sortland|sor-trondelag|sorum|sor-varanger|spjelkavik|spydeberg|st|stange|stathelle|stavanger|stavern|steigen|steinkjer|stjordal|stjordalshalsen|stokke|stord|stordal|stor-elvdal|storfjord|strand|stranda|stryn|sula|suldal|sund|sunndal|surnadal|svalbard|sveio|svelvik|sykkylven|tana|tananger|telemark|time|tingvoll|tinn|tjeldsund|tjome|tm|tokke|tolga|tonsberg|torsken|tr|trana|tranby|tranoy|troandin|trogstad|troms|tromsa|tromso|trondheim|trysil|tvedestrand|tydal|tynset|tysfjord|tysnes|tysvar|uenorge|ullensaker|ullensvang|ulstein|ulvik|unjarga|utsira|va|vaapste|vadso|vaga|vagan|vagsoy|vaksdal|valer.hedmark|valer.ostfold|valle|vang|vanylven|vardo|varggat|varoy|vefsn|vega|vegarshei|vennesla|verdal|verran|vest-agder|vestby|vestfold|vestnes|vestre-slidre|vestre-toten|vestvagoy|vevelstad|vf|vgs|vik|vikna|vindafjord|voagat|volda|voss|vossevangen|xn--andy-ira|and\xf8y|xn--asky-ira|ask\xf8y|xn--aurskog-hland-jnb|aurskog-h\xf8land|xn--avery-yua|aver\xf8y|xn--b-5ga.nordland|b\xf8.nordland|xn--b-5ga.telemark|b\xf8.telemark|xn--bdddj-mrabd|b\xe5d\xe5ddj\xe5|xn--bearalvhki-y4a|bearalv\xe1hki|xn--berlevg-jxa|berlev\xe5g|xn--bhcavuotna-s4a|b\xe1hcavuotna|xn--bhccavuotna-k7a|b\xe1hccavuotna|xn--bidr-5nac|b\xe1id\xe1r|xn--bievt-0qa|biev\xe1t|xn--bjddar-pta|b\xe1jddar|xn--blt-elab|b\xe1l\xe1t|xn--bmlo-gra|b\xf8mlo|xn--bod-2na|bod\xf8|xn--brnnysund-m8ac|br\xf8nn\xf8ysund|xn--brnny-wuac|br\xf8nn\xf8y|xn--brum-voa|b\xe6rum|xn--btsfjord-9za|b\xe5tsfjord|xn--davvenjrga-y4a|davvenj\xe1rga|xn--davvi-trndelga-6gb77a|davvi-tr\xf8ndel\xe1ga|xn--dnna-gra|d\xf8nna|xn--drbak-wua|dr\xf8bak|xn--dyry-ira|dyr\xf8y|xn--eveni-0qa01ga|even\xe1\u0161\u0161i|xn--finnmrku-dza|finnm\xe1rku|xn--finny-yua|finn\xf8y|xn--fjord-lra|\xe5fjord|xn--flor-jra|flor\xf8|xn--fl-zia|fl\xe5|xn--frde-gra|f\xf8rde|xn--frna-woa|fr\xe6na|xn--frya-hra|fr\xf8ya|xn--ggaviika-8ya47h|g\xe1\u014bgaviika|xn--gildeskl-g0a|gildesk\xe5l|xn--givuotna-8ya|g\xe1ivuotna|xn--gjvik-wua|gj\xf8vik|xn--gls-elac|g\xe1ls\xe1|xn--h-2fa|h\xe5|xn--hamary-fya|hamar\xf8y|xn--hbmer-xqa|h\xe1bmer|xn--hcesuolo-7ya35b|\u010d\xe1hcesuolo|xn--hery-ira.nordland|her\xf8y.nordland|xn--hery-ira.xn--mre-og-romsdal-qqb|her\xf8y.m\xf8re-og-romsdal|xn--hgebostad-g3a|h\xe6gebostad|xn--hmmrfeasta-s4ac|h\xe1mm\xe1rfeasta|xn--hnefoss-q1a|h\xf8nefoss|xn--hobl-ira|hob\xf8l|xn--holtlen-hxa|holt\xe5len|xn--hpmir-xqa|h\xe1pmir|xn--hyanger-q1a|h\xf8yanger|xn--hylandet-54a|h\xf8ylandet|xn--indery-fya|inder\xf8y|xn--jlster-bya|j\xf8lster|xn--jrpeland-54a|j\xf8rpeland|xn--karlsy-fya|karls\xf8y|xn--karmy-yua|karm\xf8y|xn--kfjord-iua|k\xe5fjord|xn--klbu-woa|kl\xe6bu|xn--koluokta-7ya57h|\xe1k\u014boluokta|xn--krager-gya|krager\xf8|xn--kranghke-b0a|kr\xe5anghke|xn--krdsherad-m8a|kr\xf8dsherad|xn--krehamn-dxa|\xe5krehamn|xn--krjohka-hwab49j|k\xe1r\xe1\u0161johka|xn--ksnes-uua|\xf8ksnes|xn--kvfjord-nxa|kv\xe6fjord|xn--kvitsy-fya|kvits\xf8y|xn--kvnangen-k0a|kv\xe6nangen|xn--l-1fa|\xe5l|xn--laheadju-7ya|\xe1laheadju|xn--langevg-jxa|langev\xe5g|xn--ldingen-q1a|l\xf8dingen|xn--leagaviika-52b|lea\u014bgaviika|xn--lesund-hua|\xe5lesund|xn--lgrd-poac|\xe5lg\xe5rd|xn--lhppi-xqa|l\xe1hppi|xn--linds-pra|lind\xe5s|xn--loabt-0qa|loab\xe1t|xn--lrdal-sra|l\xe6rdal|xn--lrenskog-54a|l\xf8renskog|xn--lten-gra|l\xf8ten|xn--lt-liac|\xe1lt\xe1|xn--lulli-trndelga-6gb77a|lulli-tr\xf8ndel\xe1ga|xn--lury-ira|lur\xf8y|xn--mely-ira|mel\xf8y|xn--merker-kua|mer\xe5ker|xn--mjndalen-64a|mj\xf8ndalen|xn--mlatvuopmi-s4a|m\xe1latvuopmi|xn--mli-tla|\xe5mli|xn--mlselv-iua|m\xe5lselv|xn--moreke-jua|mo\xe5reke|xn--mosjen-eya|mosj\xf8en|xn--mot-tla|\xe5mot|xn--mre-og-romsdal-qqb|m\xf8re-og-romsdal|xn--msy-ula0h|m\xe5s\xf8y|xn--mtta-vrjjat-k7af|m\xe1tta-v\xe1rjjat|xn--muost-0qa|muos\xe1t|xn--nmesjevuemie-tcba|n\xe5\xe5mesjevuemie|xn--nordlnda-dza|nordl\xe1nda|xn--nordtrndelag-0jb|nordtr\xf8ndelag|xn--nord-trndelag-hnb|nord-tr\xf8ndelag|xn--nry-yla5g|n\xe6r\xf8y|xn--nttery-byae|n\xf8tter\xf8y|xn--nvuotna-hwa|n\xe1vuotna|xn--oppegrd-ixa|oppeg\xe5rd|xn--ostery-fya|oster\xf8y|xn--osyro-wua|os\xf8yro|xn--porsgu-sta26f|pors\xe1\u014bgu|xn--rady-ira|rad\xf8y|xn--rdal-poa|\xe5rdal|xn--rde-ula|r\xe5de|xn--rdy-0nab|r\xf8d\xf8y|xn--rennesy-v1a|rennes\xf8y|xn--rhkkervju-01af|r\xe1hkker\xe1vju|xn--rholt-mra|r\xe5holt|xn--risa-5na|r\xe1isa|xn--risr-ira|ris\xf8r|xn--rland-uua|\xf8rland|xn--rlingen-mxa|r\xe6lingen|xn--rmskog-bya|r\xf8mskog|xn--rros-gra|r\xf8ros|xn--rskog-uua|\xf8rskog|xn--rst-0na|r\xf8st|xn--rsta-fra|\xf8rsta|xn--ryken-vua|r\xf8yken|xn--ryrvik-bya|r\xf8yrvik|xn--s-1fa|\xe5s|xn--sandnessjen-ogb|sandnessj\xf8en|xn--sandy-yua|sand\xf8y|xn--seral-lra|\xe5seral|xn--sgne-gra|s\xf8gne|xn--skierv-uta|skierv\xe1|xn--skjervy-v1a|skjerv\xf8y|xn--skjk-soa|skj\xe5k|xn--sknit-yqa|sk\xe1nit|xn--sknland-fxa|sk\xe5nland|xn--slat-5na|s\xe1lat|xn--slt-elab|s\xe1l\xe1t|xn--smla-hra|sm\xf8la|xn--smna-gra|s\xf8mna|xn--snase-nra|sn\xe5ase|xn--sndre-land-0cb|s\xf8ndre-land|xn--snes-poa|\xe5snes|xn--snsa-roa|sn\xe5sa|xn--sr-aurdal-l8a|s\xf8r-aurdal|xn--srfold-bya|s\xf8rfold|xn--sr-fron-q1a|s\xf8r-fron|xn--sr-odal-q1a|s\xf8r-odal|xn--srreisa-q1a|s\xf8rreisa|xn--sr-trndelag-ggbe|s\xf8r-tr\xf8ndelag|xn--srum-gra|s\xf8rum|xn--sr-varanger-ggb|s\xf8r-varanger|xn--stfold-9xa|\xf8stfold|xn--stjrdal-s1a|stj\xf8rdal|xn--stjrdalshalsen-sqb|stj\xf8rdalshalsen|xn--stre-toten-zcb|\xf8stre-toten|xn--tjme-hra|tj\xf8me|xn--tnsberg-q1a|t\xf8nsberg|xn--trany-yua|tran\xf8y|xn--trgstad-r1a|tr\xf8gstad|xn--trna-woa|tr\xe6na|xn--troms-zua|troms\xf8|xn--tysvr-vra|tysv\xe6r|xn--unjrga-rta|unj\xe1rga|xn--vads-jra|vads\xf8|xn--vard-jra|vard\xf8|xn--vegrshei-c0a|veg\xe5rshei|xn--vestvgy-ixa6o|vestv\xe5g\xf8y|xn--vgan-qoa|v\xe5gan|xn--vgsy-qoa0j|v\xe5gs\xf8y|xn--vg-yiab|v\xe5g\xe5|xn--vler-qoa.hedmark|v\xe5ler.hedmark|xn--vler-qoa.xn--stfold-9xa|v\xe5ler.\xf8stfold|xn--vre-eiker-k8a|\xf8vre-eiker|xn--vrggt-xqad|v\xe1rgg\xe1t|xn--vry-yla5g|v\xe6r\xf8y|xn--yer-zna|\xf8yer|xn--ygarden-p1a|\xf8ygarden|xn--ystre-slidre-ujb|\xf8ystre-slidre))\.no)(?![a-z0-9\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xea\xef\xf1\xf2\xf3\xf4\xf6\xf8\xfc\u010d\u0111\u0144\u014b\u0161\u0167\u017e])""", re.IGNORECASE)
# Re-open stdin with fault tolerance
sys.stdin = codecs.getreader('utf8')(sys.stdin.detach(), errors='ignore')
for line in sys.stdin:
for match in dotno.findall(line):
print(match)