webForumDet fria alternativet

Prioritering i regex

Programmeringur Programmering - Övrigt

2 svar · 429 visningar · startad av MAge

Medlem sedan apr. 200333 inlägg
Frågan#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"

Medlem sedan dec. 20025 483 inlägg
#2

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

/[^x]*x|[^y]*y|[^z]*z/
Medlem 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.

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