Page 1 of 1

Hromadne prejmenovani souboru-Regexp - backreference + cislo

Posted: 11 Nov 2006, 14:47
by vbr
Zdravim,
chtel bych se zeptat, jestli je mozne v hromadnem prejmenovani souboru nahradit treba
IMG1234.JPG ...
za
IMG1_1234.JPG ... ?

Pouzitim regularniho vyrazu s nahrazenim:
(IMG)([0-9][0-9][0-9][0-9]\.JPG) // kvantifikator {4} nefunguje ?
$11_$2 // se pokusi nacist obsah jedenacte zavorky a nahlasi chybu
$1\1_$2 // zase primo vlozi nepripustne \

Nahrada za mirne odlisne $1_1_$2 je v poradku.

Prehledl jsem neco duleziteho v popisu funkci a syntaxe?
Diky.

Re: Hromadne prejmenovani souboru

Posted: 11 Nov 2006, 21:57
by Miroslav Novosad
vbr wrote:v hromadnem prejmenovani souboru nahradit treba
IMG1234.JPG ...
za
IMG1_1234.JPG ... ?
A proč nepoužít Batch Rename -> Search for -> Replace with?

Re: Hromadne prejmenovani souboru

Posted: 12 Nov 2006, 17:33
by vbr
Miroslav Novosad wrote: A proč nepoužít Batch Rename -> Search for -> Replace with?
O to jsem se presne snazil, vyse uvedene pokusy jsou samozrejme prave z dialogu tohoto pluginu.
Problem byl s cislici nasledujici bezprostredne po cislovane zpetne referenci.

Posted: 12 Nov 2006, 20:03
by Jan Rysavy
Patrně chcete namnožit první číslici?

IMG(.)(.*)
IMG$1_$1$2

Ohledně {4} bohužel netušíme, co máte na mysli. Můžete to rozvést, případně vložit odkaz na specifikaci?

Posted: 12 Nov 2006, 22:58
by vbr
Jan Rysavy wrote:Patrně chcete namnožit první číslici?

IMG(.)(.*)
IMG$1_$1$2

Ohledně {4} bohužel netušíme, co máte na mysli. Můžete to rozvést, případně vložit odkaz na specifikaci?
Diky za odpoved,
nechtel jsem namnozit prvni cislici ale pridat prave cislici 1 za prvni cast nazvu:
IMG3456.JPG ... >> IMG1_3456.JPG
(Jde o pridani dalsi cifry po prekroceni 10000 polozek puvodniho cislovani.)

Problem je v tesnem sousedstvi cislovane backreference $1 a nasledujici cislovky/retezce "1", ktery bych chtel vlozit. (Poklada se pochopitelne za neexistujici $11 a escape \1 zase vlozi i zpetne lomitko.)

S timhle konkretnim pripadem se celkem snadno vyrovnam, proste jsem vlozil ono podtrzitko navic (kdybych hodne chtel, muzu ho v dalsim kroku nechat odstranit), spis mi slo o pouzitou syntax RE.

Co se tyka zapisu {4}, jedna se v me znamych dialektech regularnich vyrazu o kvantifikator urcujici kolikrat se ma vyskytovat predchozi element ; viz napr.:
http://www.regularnivyrazy.info/shrnuti-syntaxe.html
http://www.regular-expressions.info/repeat.html
http://docs.python.org/lib/re-syntax.html

tedy:
[0-9]{4} je ctyrmistne cislo
[0-9]{3,7} tri az sedmimistne cislo
Pravda ale je, ze o tomto neni zminka ani v prilozene napovede k syntaxi RE, takze to mozna neni podporovano v pouzite knihovne.
(jedna se jen o zjednoduseni zapisu, stejnou funkci ma proste zopakovani)
[0-9]{3,7} == [0-9][0-9][0-9][0-9]?[0-9]?[0-9]?[0-9]?

Posted: 13 Nov 2006, 11:56
by Jan Rysavy
vbr wrote:Diky za odpoved,
nechtel jsem namnozit prvni cislici ale pridat prave cislici 1 za prvni cast nazvu:
IMG3456.JPG ... >> IMG1_3456.JPG
(Jde o pridani dalsi cifry po prekroceni 10000 polozek puvodniho cislovani.)
V tom případě nepotřebujete regulární výrazy, stačí prosté Search&Replace, jak psal pan Novosad:

Search for: IMG
Replace with: IMG1_

Ohledně {4} mi říká kolega, že toto neimplementoval.

Posted: 13 Nov 2006, 16:02
by vbr
Jan Rysavy wrote:
Search for: IMG
Replace with: IMG1_

Ohledně {4} mi říká kolega, že toto neimplementoval.
Diky, v poradku, chtel jsem si jen ujasnit podporu jednotlivych konstrukci RE.
Regularni vyrazy potrebuju k nahrazeni prave jen neprecislovanych IMG3456.JPG ..., protoze v tech samych podadresarich jsou obcas i jiz drive precislovane IMG0_7890 ..., ktere chci samozrejme nechat v teto podobe (omlouvam se, ze jsem to nepripsal k uvodni informaci, je to docela dulezita okolnost).

Jak jsem ale psal drive, nemam s onim podtrzitkem navic zasadni problem, kazdopadne je to pohodlnejsi, nez delat "neregularni" nahrazeni po adresarich.
Hlavne uz ale vim, s jakou syntaxi a moznostmi pocitat, az budu potrebovat hromadne prejmenovani pro nejakou dalsi praci.

Jeste jednou diky.

Posted: 13 Nov 2006, 16:15
by Jan Rysavy
Pokud chcete z přejmenování vyloučit soubory "IMG0_*", zadejte do
Mask: |IMG0_*

Viz popis masek v dokumentaci: Help > Index > File Masks
nebo zde: http://forum.altap.cz/viewtopic.php?t=477

Posted: 13 Nov 2006, 16:36
by vbr
Diky, masky vypadaji taky docela zajimave, jeste se na ne podivam podrobneji.