Fandom

WoWWiki

USERAPI strfindt

Redirected from Strfindt

104,633pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

This page documents a user-defined function that you can copy and paste into your addon. Replace <PREFIX> with your AddOn's prefix to avoid conflicts between different versions of these functions.
User defined functions < strfindt
strfindt - by Mikk -


A thin wrapper for strfind that returns the results as a table, allowing it to be used in e.g. if() clauses while capturing subexpressions.

nBeginPos, nEndPos = <PREFIX>_strfindt(tableCaptures, strHaystack, strRegex, nStartPos, boolPlain)


Function Parameters Edit

Arguments Edit

(tableCaptures, strHaystack, strRegex, nStartPos, boolPlain)
tableCaptures 
output Table - captured subexpressions

(identical to strfind() after this point)

strHaystack 
String - the string to perform the search in
strRegex 
String - the regular expression (search pattern)
nStartPos 
Number - the position to begin the search on (nil = from the beginning)
boolPlain 
Boolean - set to true to not use regexes (which defeats the whole purpose of this wrapper)

Returns Edit

nBegin, nEnd
nBeginPos 
Number - beginning of match (1-based) or nil for no match
nEndPos
String - end position of match


Example Edit

 local results = {};
 if(<PREFIX>_strfindt(results, 
   '<b><a href="wowwiki.com">WoWWiki</a>', 
   '<a [^>]*%fhref="([^"]*)"[^>]>([^<])+</a>')
 then
   print results[2] . " lives at " . results[1];
 end

ResultEdit

 WoWWiki lives at wowwiki.com

CodeEdit

 -- Returns: nBeginPos, nEndPos.  Captured expressions go in tOut
 function <PREFIX>_strfindt(tOut, strFind, strRegex, nStart, bPlain)
   local a = { string.find(strFind, strRegex, nStart, bPlain) };
   while(getn(tOut)>0) do tremove(tOut,1); end
   for _,v in a do
     tinsert(tOut, v);
   end
   return a[1], a[2];
 end

Also on Fandom

Random Wiki