webForumDet fria alternativet

RegExp hjälp!

ASP

9 svar · 200 visningar · startad av JE

Medlem sedan juni 2000144 inlägg
Frågan#1

Har en sträng som ser ut på detta sett:

33;5#4;6#2443;5#6233;2#2;1#53;3

Sedan vill jag söka i den strängen efter t.ex 33 och då få ut talet 5 som står efter ; tecknet. Den ska då INTE ta 6233 som även innehåller 33.

Går det att göra me RegExp?

Någon som har ett förslag på en lösning?

------------------
/JE

Medlem sedan dec. 19998 577 inlägg
#2

Nått sånthär kanske

pattern = "(#\d+;)(\d+)"

Då har du ditt nummer i "$2"

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

[Redigerat av Vide den 20 jun 2001]

Medlem sedan juni 2000144 inlägg
#3

Hänger inte riktigt med, vart skriver ja in att den ska match just siffran 33?

Just nu ser koden ut på detta sett:

strString = "33;5#4;6#2443;5#6233;2#2;1#53;3"

				Set objRegExp = New RegExp
				
				objRegExp.Global = True
				objRegExp.IgnoreCase = True
				objRegExp.Pattern = "(#\d+;)(\d+)"
				
				Set Matches = objRegExp.Execute(strString)
				For Each Match In Matches
					Response.Write Match.value
				Next

------------------
/JE

Medlem sedan dec. 19998 577 inlägg
#4

coh för att bara träffa 33:

pattern = "(#33;)(\d)"

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

Medlem sedan juni 2000144 inlägg
#5

Löste det på detta sätt:


Set objRegExp = New RegExp

objRegExp.Global = True
objRegExp.IgnoreCase = True
objRegExp.Pattern = "#?^33;\d+"

Set Matches = objRegExp.Execute(strString)
For Each Match In Matches
	Response.Write Replace(Match.value, "33;", "") &"<br>"
Next

Verkar funka. Eller ser ni något konstigt i koden? Inte så haj på RegExp :)

------------------
/JE

Medlem sedan dec. 19998 577 inlägg
#6

hmm.. det funkar nog inte...

"#?^33;\d+"

#? betyder noll eller fler förekomster av #.

Kolla in denna för referens: http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp#pattern

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

Medlem sedan juni 2000144 inlägg
#7

Jo de e sant, dock fungerar det inte på det sättat du skrev heller för då tar den inte den första 33:an som ej har något # tecken före sig.

Alltså måste de bli något som kollar om det eventuellt finns ett # tecken före siffran man vill matcha, finns det inget # tecken får den dock inte ta 6233 som en 33:a.
Hmm dilemma...kört fast :(

------------------
/JE

Medlem sedan dec. 19998 577 inlägg
#8

"3{2};\d+"

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

Medlem sedan juni 2000144 inlägg
#9

Hehe, ibland stirrar man sig blind och försöker krångla till dej för sig i onödan.
Gjorde så att jag bara lade till ett # tecken i början av strängen så funka de ju perfa me ditt pattern utmärkt.
Stort tack för hjälpen!

------------------
/JE

Medlem sedan dec. 19998 577 inlägg
#10

Ah, jag trode det var en sträng som du inte kunde påverka... ;)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

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