webForumDet fria alternativet

Reg. Exp.

5 svar · 302 visningar · startad av oJones

oJonesMedlem sedan dec. 200154 inlägg
#1

Försöker bli klok på Reg. Exp. men det går inget vidare.

Det hela är till en sökfunktion som ska söka igenom en databas. Alla poster i databasen är i VARCHAR (mysql).

Problemet kommer då man söker efter "0200". Det finns en post som heter just 0200, men den hittas inte. Däremot hittas 02 och 2000.
Samma sak gäller när man söker efter . (punkt).

Function PunchWord(astring)
	
	astring = Replace(astring,",","%")
	
	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true		 	                 objRegExp.Pattern = sokord

		Set matches = objRegExp.Execute(astring)
			For Each match In matches
				astring = Replace(astring,match,"<b>" & match & "</b>")
			Next
		Set matches = Nothing
		
	Set objRegExp = Nothing
	astring = Replace(astring,"%",",")
	PunchWord = astring
End Function

Någon som kan hjälpa till?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Varför regexp överhuvudtaget?

replace(astring,sokord,"<b>" & sokord & "</b>")

Om du skall använda regexp så måste du särbehandla väldigt många tecken genom att skriva, t.ex.

pattern = "\."

om du vill söka på . eftersom det normalt betyder att man matchar ett godtyckligt tecken.

oJonesMedlem sedan dec. 200154 inlägg
#3

Anledningen till reg.Exp är att jag vill att den ska låta det sökta ordet stå kvar i exakt samma ordning vad gäller gemener/versaler.

Söker man efter "will" så skriver den ut <b>will</b> istället för <b>Will</b> som är det korrekta.

pirroMedlem sedan aug. 2001226 inlägg
#4

vet inte men kanske

Function PunchWord(astring)

	
	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true		 	                 		objRegExp.Pattern = "" & Replace(sokord,".","\.")

		Set matches = objRegExp.Execute(astring)
			For Each match In matches
				astring = Replace(astring,match,"<b>" & match & "</b>")
			Next
		Set matches = Nothing
		
	Set objRegExp = Nothing
	PunchWord = astring
End Function
pirroMedlem sedan aug. 2001226 inlägg
#5

Mixtrade lite o fickd etta att fungera...

<%
Function PunchWord(astring,sokord)

	
	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true
		objRegExp.Pattern = "" & Replace(sokord,".","\.")

		Set matchesa = objRegExp.Execute(astring)
			For Each matcha In matchesa
				astring = Replace(astring,matcha,"<b>" & matcha & "</b>")
			Next
		Set matches = Nothing
		
	Set objRegExp = Nothing
	PunchWord = astring
End Function

%>
<%=PunchWord("min text her sa det sa","text")%>
pirroMedlem sedan aug. 2001226 inlägg
#6

Kom på en verson om du ska ha flera sökord....

<%
Function PunchWord(astring,sokord)
sokord = Replace(sokord,".","\.")
apa = split(sokord,",")
nya = ""
for i = 0 to ubound(apa)
nya = nya & "(" & apa(i) & ")"
if i <> ubound(apa) then
nya = nya & "|"
end if
next
	Set objRegExp = New RegExp
		objRegExp.Global = True
		objRegExp.IgnoreCase = true
		objRegExp.Pattern = nya

		Set matchesa = objRegExp.Execute(astring)
			For Each matcha In matchesa
				astring = Replace(astring,matcha,"<b>" & matcha & "</b>")
			Next
		Set matches = Nothing
		
	Set objRegExp = Nothing
	PunchWord = astring
End Function

%>
<%=PunchWord("her har du en hel hog med ord ser du","har,hel,ord")%>

alltså dela upp med ,

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