Portál AbcLinuxu, 25. dubna 2024 12:26


Dotaz: Regularne vyrazy - ignore word

11.5.2012 13:36 bob
Regularne vyrazy - ignore word
Přečteno: 250×
Odpovědět | Admin
Potreboval by som pomoc pri 'replace' pomocou regularnych vyrazov. Som v nich takmer zaciatocnik.

Chcel by som, aby replace odstranil pomlcku pre retazce typu:

slovo1-slovo2 (slovo2 iba male pismena)

s vynimkou pre:

slovo-li (napr. bude-li, nez-li, atd.)

Teda, aby: je-limanek zmenil na jelimanek a nez-li nechal nezmenene

Konkretne, ako upravit pythonovsku cast scriptu, aby za pomlckou ignoroval 'li ', 'li.', 'li?', 'li!', atd. (t.j. 'li'+\s alebo 'li'+neabecedny znak):

line = re.sub(r'(\s|„|“)([a-žA-Ž]+)-([a-záéíýúäôľščťžňďěřů])', r'\1\2\3', line)

Dakujem za pomoc

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.5.2012 14:11 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použijte vyhlížení.
line = re.sub(r'(\s|„|“)([a-žA-Ž]+)-(?!li\b)([a-záéíýúäôľščťžňďěřů]+)', r'\1\2\3', line)
11.5.2012 21:02 bob
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Velka vdaka za pomoc - funguje to, aj za serial o regularnych vyrazoch. Lookahead som sice googlom nasiel, len som myslel, ze ked je v zatvorkach tak ho berie ako parameter/polozku pre nahradzovanie r'\2 - a to nastastie neplati :)
Tarmaq avatar 11.5.2012 16:25 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Odpovědět | | Sbalit | Link | Blokovat | Admin
neresi to sice tvuj problem, ale nepoužívej konstrukci [a-žA-Ž], protoze v tech rozsazich jsou i jine znaky nez pismena ceske abecedy..
Vyjmenuj radeji jednotlive znaky: napr.:
[a-záčďéíňóřšťúůýž]
Don't panic!
11.5.2012 21:07 bob
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Vdaka za radu. Skript je pouzity pri uprave textov z beletrie, tak som akosi predpokladal, ze tam to snad vadit nebude - len som si zjednodusil zapis...
11.5.2012 21:29 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Když bych to chtěl takto vyjmenovat, tak pro CZ bych doplnil minimálně: ö, ale ještě taky: äü
pro SK ještě: ľĺô
a obecně přidal aspoň: ëïÿâêûôåćśőű
:-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
13.5.2012 13:41 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Možná bych python trochu pošťouchnul pomocí pypi
regex.sub(r'(\b|\s|„|“)([[:alpha:]]+)-(?!li\b)([[:lower:]]+)', r'\1\2\3', line)
mi při správném nastavení locale připadá trochu pokrokovější, resp. odpovědnost za nevynechání žádného znaku padá na někoho jiného :) P.S. Nezkoušel jsem :D

13.5.2012 03:21 František Krišpín Žižkov
Rozbalit Rozbalit vše Re: Regularne vyrazy - ignore word
Odpovědět | | Sbalit | Link | Blokovat | Admin
skus toto: for (++xx; i < yy; x+1 != ""; z <> 3.14)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.