This page documents a user-defined function that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions

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 | edit source]

Arguments[edit | edit source]

(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 | edit source]

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


Example[edit | edit source]

 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

Result[edit | edit source]

 WoWWiki lives at wowwiki.com

Code[edit | edit source]

 -- 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
Community content is available under CC-BY-SA unless otherwise noted.