#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mnxs)(?mnxs-i)" & @CRLF & _
"^" & @CRLF & _
"(?!$)" & @CRLF & _
"(?<Thousands>" & @CRLF & _
" M{0,3}" & @CRLF & _
")" & @CRLF & _
"(?<Hundreds>" & @CRLF & _
" (" & @CRLF & _
" (C(M|D))" & @CRLF & _
" (?!C)" & @CRLF & _
" |" & @CRLF & _
" D" & @CRLF & _
" )?" & @CRLF & _
" C{0,3}" & @CRLF & _
")" & @CRLF & _
"(?<Tens>" & @CRLF & _
" (" & @CRLF & _
" (X(C|L))" & @CRLF & _
" (?!X)" & @CRLF & _
" |" & @CRLF & _
" L" & @CRLF & _
" )?" & @CRLF & _
" X{0,3}" & @CRLF & _
")" & @CRLF & _
"(?<Ones>" & @CRLF & _
" (" & @CRLF & _
" (I(X|V))" & @CRLF & _
" (?!I)" & @CRLF & _
" |" & @CRLF & _
" V" & @CRLF & _
" )?" & @CRLF & _
" I{0,3}" & @CRLF & _
")" & @CRLF & _
"$"
Local $sString = "MMMDCCCLXXXVIII" & @CRLF & _
"MMMCDXLIV" & @CRLF & _
"" & @CRLF & _
"50 Valid" & @CRLF & _
"I" & @CRLF & _
"MMMCMXCIX" & @CRLF & _
"MMDCLXXIV" & @CRLF & _
"MCDXCIX" & @CRLF & _
"CCCXVIII" & @CRLF & _
"XCII" & @CRLF & _
"MMMLXXXIV" & @CRLF & _
"MMMCMLIII" & @CRLF & _
"DCCXXX" & @CRLF & _
"DCXCV" & @CRLF & _
"CCXCV" & @CRLF & _
"MMDCLX" & @CRLF & _
"MDCCLXXVI" & @CRLF & _
"CDXLV" & @CRLF & _
"MMMCDXLII" & @CRLF & _
"CMXXI" & @CRLF & _
"MDCCCXC" & @CRLF & _
"MMCCCXLVII" & @CRLF & _
"MCMXXXVIII" & @CRLF & _
"CDXCII" & @CRLF & _
"MMMCMXXII" & @CRLF & _
"DCXLVIII" & @CRLF & _
"MCDLVI" & @CRLF & _
"DCCLXXXIX" & @CRLF & _
"MMXIV" & @CRLF & _
"MCMXC" & @CRLF & _
"CCCLXXI" & @CRLF & _
"MDCCCXXI" & @CRLF & _
"MMCMLIV" & @CRLF & _
"MDCXVI" & @CRLF & _
"MMCMXLV" & @CRLF & _
"MCDLXXIX" & @CRLF & _
"DCCCXIII" & @CRLF & _
"CCXLVII" & @CRLF & _
"MDCCCXCV" & @CRLF & _
"MMCMLXXXVIII" & @CRLF & _
"CDLX" & @CRLF & _
"MMCDLIII" & @CRLF & _
"CMXLV" & @CRLF & _
"DCCXXII" & @CRLF & _
"MMMDCCL" & @CRLF & _
"CDXXVIII" & @CRLF & _
"MMDXLII" & @CRLF & _
"DCCCXCIX" & @CRLF & _
"MMXLI" & @CRLF & _
"CMXLIX" & @CRLF & _
"MCDXXXIX" & @CRLF & _
"" & @CRLF & _
"50 Invalid" & @CRLF & _
"IIII" & @CRLF & _
"VV" & @CRLF & _
"LL" & @CRLF & _
"DD" & @CRLF & _
"XXXX" & @CRLF & _
"CCCC" & @CRLF & _
"MMMM" & @CRLF & _
"IIV" & @CRLF & _
"IIIV" & @CRLF & _
"VX" & @CRLF & _
"VL" & @CRLF & _
"VC" & @CRLF & _
"XD" & @CRLF & _
"XM" & @CRLF & _
"IL" & @CRLF & _
"IC" & @CRLF & _
"ID" & @CRLF & _
"IM" & @CRLF & _
"MCMC" & @CRLF & _
"IXX" & @CRLF & _
"XCC" & @CRLF & _
"IIC" & @CRLF & _
"CDM" & @CRLF & _
"CDC" & @CRLF & _
"MIM" & @CRLF & _
"IXL" & @CRLF & _
"ILX" & @CRLF & _
"ICX" & @CRLF & _
"IICM" & @CRLF & _
"IIIC" & @CRLF & _
"IIIM" & @CRLF & _
"XIC" & @CRLF & _
"XIXX" & @CRLF & _
"XIXC" & @CRLF & _
"IXXC" & @CRLF & _
"CMCM" & @CRLF & _
"CDCD" & @CRLF & _
"XCXC" & @CRLF & _
"XLXL" & @CRLF & _
"MDCM" & @CRLF & _
"DCD" & @CRLF & _
"IXXL" & @CRLF & _
"XLC" & @CRLF & _
"VIX" & @CRLF & _
"VID" & @CRLF & _
"VIL" & @CRLF & _
"IIVX" & @CRLF & _
"IVXL" & @CRLF & _
"MXLIVC" & @CRLF & _
"CXM" & @CRLF & _
""
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