Forum » Programiranje » regex
regex
l0g1t3ch ::
Mi lahko kdo pomaga sestavit regex, ki bo naredil naslednje
V nizu imam zaporednje vecih znakov X in to zaporednje moram nadomestiti z neko stevilko v ustreznem formatu.
Primer
niz aaaXXXa, stevilka 42 moram spremenit v aaa042a
niz XXXXaa, stevilka 1 moram spremenit v 0001a
X ubistvu drži samo mesto kamor je treba dat številko in število X-ov pove koliko mestna mora bit ta številka.
V nizu imam zaporednje vecih znakov X in to zaporednje moram nadomestiti z neko stevilko v ustreznem formatu.
Primer
niz aaaXXXa, stevilka 42 moram spremenit v aaa042a
niz XXXXaa, stevilka 1 moram spremenit v 0001a
X ubistvu drži samo mesto kamor je treba dat številko in število X-ov pove koliko mestna mora bit ta številka.
Jean-Paul ::
V bashu lahko poskusiš s čim takim:
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |grep -o 'X\+');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str" | sed "s/$xxx/$rep/";
done
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |grep -o 'X\+');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str" | sed "s/$xxx/$rep/";
done
Zgodovina sprememb…
- spremenil: Jean-Paul ()
Jean-Paul ::
Ali še malo drugače:
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |grep -o 'X\+');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str $rep" | sed 's/\([^X]*\)X\+\([^ ]*\) \([0-9]\+\)/\1\3\2/';
done
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |grep -o 'X\+');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str $rep" | sed 's/\([^X]*\)X\+\([^ ]*\) \([0-9]\+\)/\1\3\2/';
done
Jean-Paul ::
Ali bash + sed (brez grepa):
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |sed 's/[^X]*\(X\+\)[^X]*/\1/');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str $rep" | sed 's/\([^X]*\)X\+\([^ ]*\) \([0-9]\+\)/\1\3\2/';
done
echo "XXXXaa 42" | \
while read str rep;
do
xxx=$(echo $str |sed 's/[^X]*\(X\+\)[^X]*/\1/');
rep=$(printf "%0${#xxx}d" $rep);
echo "$str $rep" | sed 's/\([^X]*\)X\+\([^ ]*\) \([0-9]\+\)/\1\3\2/';
done
Invictus ::
Regex ni namenjen zamenjavi znakov ampak samo iskanju skupin znakov. Zamenjati boš moral potem s čem drugim. Na netu je dovolj primerov uporabe regex-a z vsemi znanimi jeziki.
Da se boš regex-e lažje naučil in jih delal, priporočam Regex Couch.
LP I.
Da se boš regex-e lažje naučil in jih delal, priporočam Regex Couch.
LP I.
infiniteLoop ::
Ce se kar uporabljas javo, potem lahko uporabis replace metode razreda String.
Primer:
Primer:
public class Regex { public static void main(String[] args) { String base = "aaaXXXa"; String replaced = base.replaceFirst("X+", "42"); System.out.println(replaced); } }
None of us is as dumb as all of us.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Bash osnoveOddelek: Programiranje | 2008 (798) | Brane22 |
» | PHP - stringiOddelek: Izdelava spletišč | 1780 (1603) | pehape |
» | Regexp, grep, awk problem?Oddelek: Programiranje | 1700 (1422) | Brane2 |
» | ena kratka bash skripticaOddelek: Operacijski sistemi | 1099 (890) | 'FireSTORM' |
» | [ Linux ] Kako zbrisati določene vrstice iz več fajlov hkrati?Oddelek: Operacijski sistemi | 976 (879) | Brane2 |