/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Omvendte regulære udtryk
Fra : Henning Wangerin


Dato : 03-06-05 16:41

Ja jeg ved ikke helt om overskriften er rigtig og forståelig

Jeg har et regulært udtryk som sammenfatter en stak domæner. Det udstry
vil jeg meget gerne ha "foldet ud", til de enkelte navne.

Udtrykket har ikke * eller +, så der er en veldifineret og endelig
mængde jeg søger efter.

Et tænkt eksempel til noge andre domæner kunne være

blans(strand|skov)?-?spejd(er|erne).dk

Resultatet vil blive
   "(strand|skov)?" -> "", "strand" eller "skov"
   "(er|erne)" -> "er" eller "erne"
   "-?" -> "" eller "-"

Hvem har en ide til hvordan man gør det ud fra regex-et? En stak nestede
forloops gør det, men jeg ville foretrække den anden løsning for at få
check på om alle kombinatioer er brugt (og der er mange - men manden vil
ha det sådan )

På forhånd tak

/Henning

 
 
Sune Vuorela (03-06-2005)
Kommentar
Fra : Sune Vuorela


Dato : 03-06-05 16:44

On 2005-06-03, Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
> Ja jeg ved ikke helt om overskriften er rigtig og forståelig
>
> Jeg har et regulært udtryk som sammenfatter en stak domæner. Det udstry
> vil jeg meget gerne ha "foldet ud", til de enkelte navne.
>
> Udtrykket har ikke * eller +, så der er en veldifineret og endelig
> mængde jeg søger efter.
>
> Et tænkt eksempel til noge andre domæner kunne være
>
> blans(strand|skov)?-?spejd(er|erne).dk
>
> Resultatet vil blive
>    "(strand|skov)?" -> "", "strand" eller "skov"
>    "(er|erne)" -> "er" eller "erne"
>    "-?" -> "" eller "-"
>
> Hvem har en ide til hvordan man gør det ud fra regex-et? En stak nestede
> forloops gør det, men jeg ville foretrække den anden løsning for at få
> check på om alle kombinatioer er brugt (og der er mange - men manden vil
> ha det sådan )
>
> På forhånd tak
>
> /Henning

Sune Vuorela (03-06-2005)
Kommentar
Fra : Sune Vuorela


Dato : 03-06-05 16:48

On 2005-06-03, Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
> Jeg har et regulært udtryk som sammenfatter en stak domæner. Det udstry
> vil jeg meget gerne ha "foldet ud", til de enkelte navne.

Henrik Grove har lavet 'dte' til brug for at putte mange ord i en
ordbog.
http://www.sslug.dk/~grove/dte/

Jeg har hacket den til til brug for domæneopslag og lignende, men det er
blevet noget værre slam, som jeg ikke er sikker på at jeg bryder mig om
at dele ud af, men hvis man spørger pænt kan det godt være.

>
> Udtrykket har ikke * eller +, så der er en veldifineret og endelig
> mængde jeg søger efter.

Det kan man jo heller ikke gøre ordentligt ;)


> blans(strand|skov)?-?spejd(er|erne).dk

$ ./whoistjek "[abc]-?(er|et)" dk
aer.dk er optaget
aet.dk er optaget
a-er.dk er ledigt
a-et.dk er ledigt
ber.dk er optaget
bet.dk er optaget
b-er.dk er ledigt
b-et.dk er ledigt
cer.dk er optaget
cet.dk er optaget
c-er.dk er ledigt
c-et.dk er ledigt


--
Sune

Henning Wangerin (03-06-2005)
Kommentar
Fra : Henning Wangerin


Dato : 03-06-05 17:24

On Fri, 03 Jun 2005 15:47:32 +0000, Sune Vuorela wrote:

> Jeg har hacket den til til brug for domæneopslag og lignende, men det er
> blevet noget værre slam, som jeg ikke er sikker på at jeg bryder mig om
> at dele ud af, men hvis man spørger pænt kan det godt være.

Jamen så vil jeg meget gerne sige "be be"

> $ ./whoistjek "[abc]-?(er|et)" dk
> aer.dk er optaget
> aet.dk er optaget
> <osv>

Se det ser lige ud som det output jeg jagter.

Endnu en gang "be be"



Sune Vuorela (03-06-2005)
Kommentar
Fra : Sune Vuorela


Dato : 03-06-05 22:36

On 2005-06-03, Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
> Jamen så vil jeg meget gerne sige "be be"

okay. Hvis din mailadresse virker, så smider jge det den vej.

--
Sune

Henning Wangerin (04-06-2005)
Kommentar
Fra : Henning Wangerin


Dato : 04-06-05 19:05

On Fri, 03 Jun 2005 21:36:08 +0000, Sune Vuorela wrote:

> On 2005-06-03, Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
>> Jamen så vil jeg meget gerne sige "be be"
>
> okay. Hvis din mailadresse virker, så smider jge det den vej.

Det gjorde den.
Tak for det.

Jeg får kigget på det en af dagene.

/henning


Niels Baggesen (06-06-2005)
Kommentar
Fra : Niels Baggesen


Dato : 06-06-05 18:54

Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
> Et tænkt eksempel til noge andre domæner kunne være

> blans(strand|skov)?-?spejd(er|erne).dk

i bash:

$ echo blans{strand,skov,}{-,}spejd{er,erne}.dk | tr ' ' '\n'
blansstrand-spejder.dk
blansstrand-spejderne.dk
blansstrandspejder.dk
blansstrandspejderne.dk
blansskov-spejder.dk
blansskov-spejderne.dk
blansskovspejder.dk
blansskovspejderne.dk
blans-spejder.dk
blans-spejderne.dk
blansspejder.dk
blansspejderne.dk

/Niels

--
Niels Baggesen -- @home -- Århus -- Denmark -- niels@baggesen.net
The purpose of computing is insight, not numbers -- R W Hamming

Henning Wangerin (09-06-2005)
Kommentar
Fra : Henning Wangerin


Dato : 09-06-05 08:23

On Mon, 06 Jun 2005 17:53:43 +0000, Niels Baggesen wrote:

> Henning Wangerin <news_via_pan+041124@hpc.dk> wrote:
>> Et tænkt eksempel til noge andre domæner kunne være
>
>> blans(strand|skov)?-?spejd(er|erne).dk
>
> i bash:
>
> $ echo blans{strand,skov,}{-,}spejd{er,erne}.dk | tr ' ' '\n'
> blansstrand-spejder.dk

Hej hov holdt stop!

Det var jo bare endnu simplere.

Den løsning er købt, og er allerede implementeret!

Mange tak for løsningen
/Henning



Henning Wangerin (09-06-2005)
Kommentar
Fra : Henning Wangerin


Dato : 09-06-05 08:58

On Thu, 09 Jun 2005 09:22:58 +0200, Henning Wangerin wrote:

> On Mon, 06 Jun 2005 17:53:43 +0000, Niels Baggesen wrote:
>
>> $ echo blans{strand,skov,}{-,}spejd{er,erne}.dk | tr ' ' '\n'
>>
> Den løsning er købt, og er allerede implementeret!

Nå det virker ikke helt alligevel.

Jeg har mine udtryk liggende i en fil i formatet

MASK=foo{bar,bir,bur,}bla.dk
MASK=foo{bor,byr,ber,}bla.dk

Dem hælder jeg igennem et script som gerne skulle bearbejde alle
mulighederne. Det virker bare ikke. Scriptet ser i princippet sådan ud:

for MASK in `grep "MASK=" /path/to/file | sed "s/MASK=//g"` ; do
echo $MASK
for DOMAIN in $MASK ; do
#for DOMAIN in `echo $MASK` ; do
#for DOMAIN in `bash echo $MASK` ; do
echo " "$DOMAIN
done
done

Ingen af de tre for DOMAIN statements virker efter hensigten, da de alle
blot spytter værdien af $MASK ud en enkelt gang i echo $DOMAIN, linien.

Hvad kan der være galt der?

/Henning

Klaus Alexander Seis~ (09-06-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 09-06-05 10:26

Henning Wangerin skrev:

> for MASK in `grep "MASK=" /path/to/file | sed "s/MASK=//g"` ; do
> echo $MASK
> for DOMAIN in $MASK ; do
> #for DOMAIN in `echo $MASK` ; do
> #for DOMAIN in `bash echo $MASK` ; do
> echo " "$DOMAIN
> done
> done
>
> Ingen af de tre for DOMAIN statements virker efter hensigten, da de
> alle blot spytter værdien af $MASK ud en enkelt gang i echo $DOMAIN,
> linien.

Hvammæ

#v+
:
for DOMAIN in $(eval echo $MASK); do
:
#v-

Mvh,

--
Klaus Alexander Seistrup
Copenhagen, Denmark
http://seistrup.dk/

Henning Wangerin (09-06-2005)
Kommentar
Fra : Henning Wangerin


Dato : 09-06-05 11:46

On Thu, 09 Jun 2005 09:25:43 +0000, Klaus Alexander Seistrup wrote:

> for DOMAIN in $(eval echo $MASK); do

BINGO
Så spiller det.

Mange tak for hjælpen til jer alle

/Henning


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste