Portál AbcLinuxu, 7. května 2025 19:25
Ahoj, regularní výrazy(regexpy) jsou super a snažím se je využívat, když to jde (moc často to není:)). Ale trošku mě rozčílila menší nekonzistence v escapování speciálních znaků.
Příklad:
/[b-f]/
/[^cs]ow/
Doposud v pořádku. Znaky [^-] jsou speciální znaky pro regexpy. Když je budu chtít použít doslova dám před ně lomítko.
Aa tady to začíná:
/o\+i/
'+' je zase znak pro regexpy se spec. významem, ale musím před něho dát lomítko. Proč?
A hnusný mix:
/[a-c]t*o\+i/
Jak mám přátelé poznat, před co dát lomítko a před co ne? Má to souvislost s rozšířenými regexpy? Jestli jo, tak nejde to přepnout do konzistentního stavu a udělat z toho bordelu něco normálního? Mě nezajímá, které regexpy používám. Buď budu dávat všude lomítko nebo ne. Jestli to má nějaký vyšší význam, rád se poučím.
Pěkný tutoriál, ze kterého vycházím: http://vim.runpaint.org/searching/creating-regular-expressions/
Díky a přeju hezký den:)
() {}
a u sed
a vim
navíc ještě +
. To plus je asi nejvíc matoucí... I já na něj občas zapomenu.
\(foo\)*\(bar\)\+\(baz\)\{3\} vs (foo)*(bar)+(baz){3}Rozšířené regulární výrazy jsou co do escapování trochu hezčí, jejich používání ve vimu by asi šlo pomocí pluginu eregex.vim (nezkoušel jsem) nebo něčeho podobného.
() {} +
není tak hrozné, ale proč mě tak trápí?
Teď se dívám na eregex.vim a perldo a rubydo vypadají velice dobře. Škoda jen, že tam není ukázané, jak se s tím vyhledává v textu (ne nahrazuje), abych si mohl hezky zvýraznit hledaná slova. Ale to už chci asi moc
( ) { | + =
a character classes, když chci speciální význam. Pořád mi přijde, že v tom je bordel.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.