#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?uxm)(?(DEFINE)" & @CRLF & _
" (?<currency_symbol> \p{Sc} )" & @CRLF & _
" (?<leading_group> [1-9] \d{0,2}+ )" & @CRLF & _
" (?<group> \d{3} )" & @CRLF & _
" (?<non_leading_groups> (?&group) (?:(?&group_delim)(?&group))*+ )" & @CRLF & _
" (?<decimal_delim>" & @CRLF & _
" (?# Use the opposite of group_delim. )" & @CRLF & _
" (?(group_delim_comma)" & @CRLF & _
" \." & @CRLF & _
" | (?(group_delim_period)" & @CRLF & _
" ," & @CRLF & _
" | [,.] (?# There's no definitive grouping_delim. )" & @CRLF & _
" )" & @CRLF & _
" )" & @CRLF & _
" )" & @CRLF & _
")" & @CRLF & _
"" & @CRLF & _
"^" & @CRLF & _
"(?>" & @CRLF & _
" (?¤cy_symbol)" & @CRLF & _
" (?&leading_group)" & @CRLF & _
" (?:" & @CRLF & _
" (?<group_delim>" & @CRLF & _
" (?<group_delim_comma> , ) |" & @CRLF & _
" (?<group_delim_period> \. ) |" & @CRLF & _
" \ (?# Allow whitespace as a delimiter. )" & @CRLF & _
" )" & @CRLF & _
" (?&non_leading_groups)" & @CRLF & _
" | \d*+ (?# It's also possible that there's no delimiter. )" & @CRLF & _
" )" & @CRLF & _
")" & @CRLF & _
"(?:" & @CRLF & _
" (?&decimal_delim)" & @CRLF & _
" \d*+" & @CRLF & _
")?+" & @CRLF & _
"$"
Local $sString = "We want to match these:" & @CRLF & _
"$1" & @CRLF & _
"$10" & @CRLF & _
"$100" & @CRLF & _
"$1000" & @CRLF & _
"$1,000" & @CRLF & _
"$10,000" & @CRLF & _
"$100,000" & @CRLF & _
"$1,000,000" & @CRLF & _
"$1.00" & @CRLF & _
"$100.00" & @CRLF & _
"$10,000.00" & @CRLF & _
"$1,000,000.00" & @CRLF & _
"$1.000.000,00" & @CRLF & _
"$1.000" & @CRLF & _
"$1.000.000" & @CRLF & _
"$1,00" & @CRLF & _
"$1.000,00" & @CRLF & _
"$10000000000000" & @CRLF & _
"" & @CRLF & _
"We don't want to match these:" & @CRLF & _
"$1,000,00" & @CRLF & _
"$1,00,00" & @CRLF & _
"$1.00.000" & @CRLF & _
"" & @CRLF & _
"A few different currency symbols that we want to match:" & @CRLF & _
"$1" & @CRLF & _
"¢1" & @CRLF & _
"£1" & @CRLF & _
"¤1" & @CRLF & _
"¥1" & @CRLF & _
"₠1" & @CRLF & _
"₡1" & @CRLF & _
"₢1" & @CRLF & _
"₣1" & @CRLF & _
"₤1" & @CRLF & _
"₥1" & @CRLF & _
"₦1" & @CRLF & _
"₧1" & @CRLF & _
"₩1" & @CRLF & _
"₪1" & @CRLF & _
"₫1" & @CRLF & _
"€1" & @CRLF & _
"₭1" & @CRLF & _
"₮1" & @CRLF & _
"₯1" & @CRLF & _
"₰1" & @CRLF & _
"₱1" & @CRLF & _
"₲1" & @CRLF & _
"₳1" & @CRLF & _
"₴1" & @CRLF & _
"₵1" & @CRLF & _
"₶1" & @CRLF & _
"₷1" & @CRLF & _
"₸1" & @CRLF & _
"₹1" & @CRLF & _
"₺1" & @CRLF & _
"₻1" & @CRLF & _
"₼1" & @CRLF & _
"₽1" & @CRLF & _
"" & @CRLF & _
"Nearby symbols that share some bytes (UTF-8) that we don't want to match:" & @CRLF & _
"¡1" & @CRLF & _
"¦1" & @CRLF & _
"§1" & @CRLF & _
"©1" & @CRLF & _
"ₔ1"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm