Wikia

WoWWiki

USERAPI strfindt

Talk0
101,500pages on
this wiki
Revision as of 00:44, July 9, 2008 by Charibot (Talk | contribs)

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

Arguments

(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

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


Example

 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

 WoWWiki lives at wowwiki.com

Code

 -- 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

Around Wikia's network

Random Wiki