webForumDet fria alternativet

Regexp för att matcha nästan rätt

6 svar · 447 visningar · startad av nitro2k01

nitro2k01Medlem sedan aug. 20039 342 inlägg
#1

Jag söker efter en regexp som matchar ett sökord och när ett sökord är nästan rätt, t ex
Om jag söker efter nitro2k01 så ska den även matcha nxtro2k01 eller nitfo2k01 och gärna även om det saknas eller finns en bokstav för mycket, t ex nitroo2k01 eller ntro2k01.
Matchningen ska ske så att den matchar om ordet finns i söksträngen.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

*bump*

dectgapMedlem sedan sep. 20021 655 inlägg
#3

Jag är övetygad om att det är en omöjlighet.
Reguljära uttryck kan inte "matcha till 95%" eller liknande.

Ett sätt skulle kunna vara att dynamiskt skapa uttryck, för att få med just de fall du talar om: total matchning, matchning där sökningen innehåller ett tecken mer eller matchning där sökningen innehåller ett tecken mindre.

Lite pseudo-kod:

var searchFor = "nitro2k01";
var searcForRE = new RegExp(searchForRE);

// Total matchning
if(searchForRE.test(str))
   return true;

// Ett tecken har bytts ut mot ett annat
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(ersätt det i:te tecknet i searchFor med en punkt);
   if(searchForRE.test(str))
      return true;
}

// Ett tecken saknas
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(ta bort det i:te tecknet från searchFor);
   if(searchForRE.test(str))
      return true;
}

// Det finns ett tecken för mycket
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(stoppa in en punkt på den  i:te platsen i searchFor);
   if(searchForRE.test(str))
      return true;
}
RGBMedlem sedan dec. 1999419 inlägg
#4

Det finns inget stöd för "fuzzy matches" i JS.
Men om du vill skriva ngt eget så hittar du lite info här: Levenshtein Distance.
Finns även en del intressanta länkar där.

dectgapMedlem sedan sep. 20021 655 inlägg
#5

RGB skrev:

Det finns inget stöd för "fuzzy matches" i JS.
Men om du vill skriva ngt eget så hittar du lite info här: Levenshtein Distance.
Finns även en del intressanta länkar där.

Fantastiskt intressant - tack :)
Det fanns förresten redan en implemtation i JavaScript under länkarna.
http://www.mgilleland.com/ld/ldjavascript.htm

JojoxxMedlem sedan juni 20004 308 inlägg
#6

Ja, verkligen. Det ska jag läsa ikväll :)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#7

Undrar om man får sno det skriptet rakt av, det var iaf precis vad jag var ute efter.

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