Permalänk
Inaktiv

Regexp fram till ett ord.

Har en sträng som är "hejsan vad heter du då?".

Nu vill jag söka efter alla strängar som matchar från "hejsan" och fram till "då?" utan att specificera vad som kommer i mellan.

Så hur skriver man i regexp inte "då?"

Permalänk
Medlem

/Hejsan.+då?/

borde väll funka, eller har jag missuppfattat dig?

Permalänk
Medlem

Om jag fattat det rätt så ska inte "då?" matchas, eller?

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Inaktiv

Sorry det var ett dåigt exempel. Det jag vill är att leta efter strängar som inte innehåller vissa ord.

Så kort och gott hur skriver man ett regexp som kollar så att ett visst ord inte finns med i en sträng.

Permalänk

/hejsan [^(då|hej)] då/ om jag inte minns fel, den matchar "hejsan vad heter du då" men slutar när den når order då eller liknande, du kan ta bort det andra då om du inte vill ha med det i matchningen och lägga till fler i den negerade klassen i mitten, i den ska alla ord stå som inte får finnas mellan dom.

Den tidigare nämnda funferar inte riktigt, om jag vill matcha "hejsan vad heter du då" i strängen "hejsan vad heter du då? har du gjort något illdåd idag" så kommer den matcha "hejsan vad heter du då? har du gjort något illdå" eftersom den matchar så mycket den kan hela tiden.

Visa signatur

RTFM - vacker sak att säga till folk som ställer dumma frågor

Permalänk
Inaktiv

Den stannar efter "hejsan va" efter som [^(då|hej)] bara kollar på vilka tecken som finns med inte på hela ord. Den upptäcker d i då och stannar.

Permalänk

Visst ja, /hejsan (\.*) då/ borde fungera, men den är greedy, den matchar hela strängen och sparar det som ligger mellan hejsan och då.

Eller har du tänkt dig att jag kan stoppa in ett ord var som helst i strängen och det ska inte vara med efter att man kört matchningen?

Visa signatur

RTFM - vacker sak att säga till folk som ställer dumma frågor

Permalänk
Inaktiv

Mer att den ska upptäcka om ett ord är med och då inte matcha.