webForumDet fria alternativet

RegExp - Flera ersättningar

Programmering

5 svar · 254 visningar · startad av Marcus E

Medlem sedan maj 20021 466 inlägg
Frågan#1

Låt säga att vi har strängen x=x och vill ersätta den med t.ex. 1x2=3x4. D.vs. siffror före och efter båda x.

Detta kan göras i Visual Studio med söksträngen {:a*}={:a*} och ersättningen 1\12=3\24.

Går det att utöka detta så att alla förekomster av x=x inom vinkelparentes ersätts?

Exempelvis denna sträng:
<a=be c=de>

Att göra en sökning är inga problem. Frågan är hur ersättningen ska se ut.

Det behöver inte vara för Visual Studio. Perl går lika bra.

Medlem sedan mars 20007 896 inlägg
#2

Jag försöker mig på ett Perl-pattern:

'<([^=].*)=([^\060].*) ([^=].*)=([^>].*)>'

Submönster 1 får värdet a, submönster 2 får värdet be, submönster 3 får värdet c och submönster 4 får värdet de. Helt otestat, men du kan ju alltid prova. :)

Medlem sedan maj 20021 466 inlägg
#3

Söker inte koden efter två förekomster istället för en nu? Det kan vara hur många förekomster som helst och nu fungerar bara de första två.

Medlem sedan mars 20007 896 inlägg
#4

Missade tydligen den här raden i ditt första inlägg:

Går det att utöka detta så att alla förekomster av x=x inom vinkelparentes ersätts?

:r

Då vet jag inte hur man gör. :)

Medlem sedan maj 20021 466 inlägg
#5

Nä, det är nog inte möjligt.

Får stå fast vid min egna rutin. :)

Medlem sedan dec. 19995 874 inlägg
#6

Nu vet jag att det inte är VBScript som är aktuellt, men jag tänkte mer att du kunde se min tankegång kring det hela

strTag = "<x=x y=y z=z> bla <i=i>"
oRegExp.Pattern = "\<(.*?)\>"
set oMatches = oRegExp.Execute(strTag)
for each item in oMatches

	oRegExp2.Pattern = "([^=].*?)=([^ ].*?)"
	Set oMatches2 = oRegExp2.Execute(item.Value)
	strTmp = strTag
	for each item2 in oMatches2
		strTmp = replace(strTemp, item2.Value, "nyttvärde")
	next
next
247 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)