webForumDet fria alternativet

RegExp: Hitta <!-- * -->

ASP

48 svar · 1 685 visningar · startad av oskars · sida 2 av 3

Frågan, av oskars

Tjenare! Jag försöker förstå hur jag ska göra ett mönster som hittar allting som ligger mellan \<!-- och --\> i en fil. Mitt första problem överhuvudtaget är hur man skriver just det mönstret, sen är det även så att i filen där jag vill hämta informationen så finns det flera såna här "items" som jag vill hämta. Det kan typ se ut så här: bla bla bal bla \<!-- en text --\> blasbasbdl \<!-- en a

Läs frågan i sin helhet →
Medlem sedan juni 20019 519 inlägg
#21
Function my(SubjectString)
	Dim myRegExp, myMatches, myMatch, i, myArray()
	Set myRegExp = New RegExp
	myRegExp.IgnoreCase = True
	myRegExp.Global = True
	myRegExp.Pattern = "<!--(.*)-->"

	Set myMatches = myRegExp.Execute(SubjectString)

	For Each myMatch In myMatches
		Response.Write myMatch.Value
		myRegExp.Pattern = " ?([^\=]*)=""(.*?)"" ?" ' Picked out everything in the comment section
		set m = myRegExp.Execute(Replace(Replace(myMatch.Value,"<!--",""),"-->","")) 'Remove the comment lines
		Redim Preserve myArray(m.count - 1,1)
		for each mMatch in m
			myArray(i,0) = mMatch.SubMatches(0) 'Attrubut
			myArray(i,1) = mMatch.SubMatches(1) 'Värde
			i = i + 1
		Next
	Next

	my = myArray

End Function

... mycket litet testat från mitt håll..

Dim m
m = my("<!--hej=""asd"" as=""b"" as=""b""-->")
Response.Write m(0,0) ' Ger "hej"
Medlem sedan nov. 20051 317 inlägg
#22
objRegExp.Pattern = "<!-- local=""[^""]+"" file=""[^""]+"" -->4589<!-- local --> </span>   </p>    <p class=""id"">  <span class=""cust"">.*?</span>"

Med den h är så får jag även med "4589", vill dock inte ha med det. Och 4589 är alltid olika siffror så jag kan inte bara köra Replace(). Nån tanke?

Medlem sedan juni 20019 519 inlägg
#23

är det alltid nummer?

ersätt: 4589 -> \d+ isåfall..

Medlem sedan nov. 20051 317 inlägg
#24

Det kan även innehåll typ "-", ":"...

Medlem sedan juni 20019 519 inlägg
#25

[\d-:]+

Medlem sedan nov. 20051 317 inlägg
#26

Ledsen asså, förstår om jag känns omöjlig..

men [/d-:]+ tar t.ex inte bort 12-0508

Medlem sedan juni 20019 519 inlägg
#27

Och om du hade läst vad jag skriver så hade du löst det ;) inte / det ska vara \
[\d\-:]+

Medlem sedan nov. 20051 317 inlägg
#28

Nej men asså.. skrev fel här i tråden bara :)

Om jag ersätter 4589 med [\d\-:]+ i mitt pattern så händer ingenting... den skriver ut 4589 i vilket fall... spelar det någon roll om det t.ex står "4589 " med mellanslag i slutet?

Medlem sedan juni 20019 519 inlägg
#29

Visa VAD du gör.. RegExp hittar bara patternet.. den plockar inte bort något... än ;)

Medlem sedan nov. 20051 317 inlägg
#30
objRegExp.Global = True
		objRegExp.IgnoreCase = True
		objRegExp.Pattern = "<!-- local=""[^""]+"" file=""[^""]+"" -->[\d\-:]+<!-- local--> </span>   </p>    <p class=""id"">  <span class=""cust"">.*?</span>"
		'objRegExp.Pattern = "\b\d{2}-\d{8}"

		Set hittade = objRegExp.Execute(strHTML)

		For each item in hittade

		myItem = item.value
		myItem = Replace(myItem,VbCrLf,"")

		Next

Så här ser det ut :)

Medlem sedan juni 20019 519 inlägg
#31

ditt "tal"... melland din "local" kommentar.. är det mellanslag och " i den eller vad skrev du?

din förra fråga om det spelar någon roll om du har " och ett mellanslag:
Ja det gör det

Medlem sedan nov. 20051 317 inlägg
#32

Näeh... det kommer nog aldrig vara det faktiskt...

Typ sånt här format ska det va 0651-651651

Fast det är olika antal siffror mellan bindestrecket, jämnt.

Det är alltså det jag vill ha bort :) Nu hittar vi ju det, men det ska bort btr bort bort.. jag vill hem hem hem, jävla fredag! :) Tack för att du hjälper mig!

Medlem sedan juni 20019 519 inlägg
#33

säg vilka tecken det _kan_ vara... kan det vara allt förutom a-z ?

prova med:
[\w\W]+

Medlem sedan nov. 20051 317 inlägg
#34

Bara siffror och -

Okej! Den hittar med [\w\W]+ också...

tar jag bort det med .Replace(myItem,"$3","") ?

Medlem sedan juni 20019 519 inlägg
#35

nej.. eftersom du inte ha () någonstans i din kod... () = Grupp första gruppen kan mycket väl vara din "0651-651651" träff...

Medlem sedan nov. 20051 317 inlägg
#36

Okej, ska jag sätta () runt [\w\W]+ och sen ta .Replace på $1?

Medlem sedan juni 20019 519 inlägg
#37

jo :)

Medlem sedan nov. 20051 317 inlägg
#38

Ska testa detta! Återkommer med resultat!

Medlem sedan juni 20019 519 inlägg
#39
(<!-- local="[^"]+" file="[^"]+" -->)[\d\-:]+(<!-- local--> </span>   </p>    <p class="id">  <span class="cust">.*?</span>)
$1$2

Om ditt inte fungera..

red. ditt bör fungera med $1 redan dock ;)

Medlem sedan nov. 20051 317 inlägg
#40

Okej! Jag testade det där själv, men fick inte skiten att funka! Nu testade jag din... förstår att jag fick två stycken grupper nu...

Jag ber om ursäkt för numret hänger fortfarande med...
Meeen, jag antar att jag måste lägga in att den bara ska hämta $1 och $2 någonstans! Men frågan är bara varit.

Jag testade med ObjRegExp.Replace(myItem,"$1$2"), men det ville sig inte.

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)