Portál AbcLinuxu, 11. května 2025 16:05
Vim ze je to hloupy dotaz ale potreboval bych pomoct s konstrukci regularniho vyrazu.
Situace je nasledujici: mam v retezci obsah adresare, tedy jmena vsech podadresaru a souboru, vzajeme oddelenych " \n"
. Potrebuji ziskat pouze soubory zacinajici:
soubor[0-9]{1,3}.xmljsem regularni piskle. Nemohu na to prijit. Dekuji slechcetnym pomocnikum
Slibuji ze problematiku nastuduji.
soubor[0-9][13]\.xml $
(na každý řádek, jak řetězec rozdělit závisí na tom, v čem to vlastně máš napsaný).
ls | egrep soubor[0-9]\{1,3\}.xml
Hmm neco shnileho je ve state Danskem, takhle sem to taky zkousel ale nefungovalo to podle mych predstav. Kazdopadle diky. Zatim resim operativne, viz. nize.
Apropos, jaky mate nazor na to, ze filtrovani souboru provadim jakymsi filtrem implementujici FilenameFilter
. To znamena, ze tento filtr projde cely aktualni adresar a kontroluje nazvy souboru/adresaru, cim bude adresar vetsi tim bude program pomalejsi. Je nejaky jiny, rychlejsi zpusob??
soubor[0-9]{1,3}.xml
správná – vybere soubory s názvem soubor a za ním 1 až tři číslice. Problém bude spíš v kódu okolo.
Pattern pattern = Pattern.compile("soubor\\d{1,3}.xml"); String[] a = "soubor1.xml\nsoubor.xml\nsoubor235.xml\nsoubor123.Xml\nnesoubor123.xml".split("\n"); for (String s: a) { if (pattern.matcher(s).matches()) { System.out.println(s); } }Pozor na to, že
matches()
kontroluje přesnou shodu s celým řetězcem, tj. nesmíte mít na začátku nebo konci jiné znaky.
kregexpeditor
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.