webForumDet fria alternativet

Prioritering i regex

2 svar · 429 visningar · startad av MAge

MAgeMedlem sedan apr. 200333 inlägg
#1

Tja,

Jag har lite dålig koll på regex och funderar på om det är möjligt att sätta prioritet på vad som ska matchas.
Ex.
En regex liknande denna /\w*?(x|y|z)/
så skulle jag vilja få ut "aaayaax" från strängen "aaayaaxaaa"
och "aaay" från "aaayaazaaa"

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Du får nog göra så här:

/[^x]*x|[^y]*y|[^z]*z/
MAgeMedlem sedan apr. 200333 inlägg
#3

Tack för svaret. Jag märker att mitt förenklade exempel var lite väl förenklat. Jag lyckats knåpa ihop en lösning som funkar för mitt problem. Dock fungerar det enbart att prioritera två alternativ, så en mer allsidig lösning skulle vara önskvärt.

/^(.*(?=123)|.*?(?=456))(123|456)/

Matchar "abc 456 skräp 123" i "abc 456 skräp 123 trash".
Att jag inte fick din att fungera är att jag har några parenteser för fånga upp delar av "abc" och sen vill jag fånga upp ett eventuellt "123" någonstans i strängen innan den letar efter ett "456".
Men som sagt får jag bara detta att fungera för två alternativ. Tror inte man kan gå denna vägen om man skulle vilja ha fler alternativ.

225 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
222 ms — hämta tråd, inlägg och bilagor (db)