mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 03:33:21 +00:00
Source-code for the dll can be found here under LGPL license: https://github.com/Carn/bygex It is merely an interface to boost::regex. It uses perl syntax (non-recursive). Guidelines for use: var/datum/regex/Rgx = regex_findall(haystack, regex_expression) for(var/i=1, i<=Rgx.matches.len, ++i) world << Rgx.str(i) The implementation is different to the one other regex-in-byond library I found. This implementation only returns a string containing the position and length of each match and submatch. This uses far less memory than also passing back the matched strings (especially in large files like dream-maker maps). Note: Regex indexes begin at 1 (since byond lists begin at 1), unlike traditional regex. If we are using a procedure such as regex_findall(), with 3 sub-expressions, match 1 will be the overall match. Match 2 will be subexpression 1, match 3 will be subexpression 2.... Match 5 will be the overall match of the next match...and so on. To ease use, there is /datum/regex/var/anchors which is a numerical value which can be used inside loops like so: for(var/i=1, i<=Rgx.matches.len, i+=Rgx.anchors) world << Rgx.str(i+1) This will print the first submatch of each match to world.