webForumDet fria alternativet

Lookbehind i regexp

ASP

5 svar · 255 visningar · startad av Drogen

Medlem sedan maj 200315 inlägg
Frågan#1

Vet inte om jag är i rätt forum men eftersom jag jobbar i traditionell asp så provar jag här. Jag söker ett regexp-mönster som hittar "alla a som inte har ett b framför sig". Har fått tipset att använda lookbehind och kommit fram till ett mönster som borde funka (?<!b)a . Nu visar det sig att < accpteras inte och jag hittar väldigt lite om just lookbehind medan det finns massor om lookahead. Hur ska jag lösa detta?

Medlem sedan sep. 20026 425 inlägg
#2

Kan månne mönstret "!b\s?a" fungera?
Annars rekommenderas en titt på Vides RegExp-artikel. Tilläggas bör göras att jag inte riktigt behärskar RegExp. ;)

Medlem sedan maj 200315 inlägg
#3

Nix, det mönstret hittar ingenting (ur testtexten). Ska sätta mig in i ditt föslag lite samt kolla Vides artikel även om det känns som om inget hjälper just nu... :(

Medlem sedan apr. 20003 174 inlägg
#4

Testa med..

[red][^b](a)[/red]
Medlem sedan maj 200315 inlägg
#5

Nja, nu träffar jag "rätt a", men även tecknet före a:et fastnar i träffen. Som jag har förstått det så är vitsen med "lookbehind" att träffen är "non-capturing". Tanken är att göra en replace på "alla a som inte har ett b framför sig". Därför vill jag bara hitta dessa a men inte få med tecknet före i träffen. Någon som fattar vad jag svamlar om? ;)

Medlem sedan dec. 20025 483 inlägg
#6
re.pattern = "([^b])a"
re.replace(str, "$1[i]foo[/i]")

Där foo anger vad som skall ersätta a.

:)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)