#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(([a-hKQNB]x)?(R[1-8]?[a-f]?x)?[KQNBR]?[abcdefgh]([1-8]{1}(?!=))(\(ep\))?((?<=[18])=[KQNBR])?\+{,2}|0(-0){1,2})"
Local $sString = " <dt>e4</dt><dd>match</dd>" & @CRLF & _
" <dt>a8</dt><dd>match</dd>" & @CRLF & _
" <dt>g5</dt><dd>match</dd>" & @CRLF & _
" <dt>h7</dt><dd>match</dd>" & @CRLF & _
" <dt>a1</dt><dd>match</dd>" & @CRLF & _
" <dt>Kd2</dt><dd>match</dd>" & @CRLF & _
" <dt>Kg6</dt><dd>match</dd>" & @CRLF & _
" <dt>Qh4</dt><dd>match</dd>" & @CRLF & _
" <dt>Qe2</dt><dd>match</dd>" & @CRLF & _
" <dt>Qb7</dt><dd>match</dd>" & @CRLF & _
" <dt>Nf2</dt><dd>match</dd>" & @CRLF & _
" <dt>Nc6</dt><dd>match</dd>" & @CRLF & _
" <dt>Be4</dt><dd>match</dd>" & @CRLF & _
" <dt>Bf3</dt><dd>match</dd>" & @CRLF & _
" <dt>Bb2</dt><dd>match</dd>" & @CRLF & _
" <dt>Ra1</dt><dd>match</dd>" & @CRLF & _
" <dt>Rc3</dt><dd>match</dd>" & @CRLF & _
" <dt>Rh8</dt><dd>match</dd>" & @CRLF & _
" <dt>0-0</dt><dd>match</dd>" & @CRLF & _
" <dt>0-0-0</dt><dd>match</dd>" & @CRLF & _
" <dt>exd5</dt><dd>match</dd>" & @CRLF & _
" <dt>axb7</dt><dd>match</dd>" & @CRLF & _
" <dt>exd2</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxc6</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxa4</dt><dd>match</dd>" & @CRLF & _
" <dt>Qxe2</dt><dd>match</dd>" & @CRLF & _
" <dt>Qxb7</dt><dd>match</dd>" & @CRLF & _
" <dt>Nxf2</dt><dd>match</dd>" & @CRLF & _
" <dt>Nxb2</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxb2</dt><dd>match</dd>" & @CRLF & _
" <dt>Rxh8</dt><dd>match</dd>" & @CRLF & _
" <dt>Rxc3</dt><dd>match</dd>" & @CRLF & _
" <dt>exd5(ep)</dt><dd>match</dd>" & @CRLF & _
" <dt>exd2(ep)</dt><dd>match</dd>" & @CRLF & _
" <dt>a1=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>d1=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>f8=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>e8=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>a1=N</dt><dd>match</dd>" & @CRLF & _
" <dt>b8=B</dt><dd>match</dd>" & @CRLF & _
" <dt>f1=R</dt><dd>match</dd>" & @CRLF & _
" <dt>d8=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>bxc1=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>exd1=Q</dt><dd>match</dd>" & @CRLF & _
" <dt>Raxc1</dt><dd>match</dd>" & @CRLF & _
" <dt>Rfxd2</dt><dd>match</dd>" & @CRLF & _
" <dt>R2xc1</dt><dd>match</dd>" & @CRLF & _
" <dt>R5xd2</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxc6+</dt><dd>match</dd>" & @CRLF & _
" <dt>Rxh8+</dt><dd>match</dd>" & @CRLF & _
" <dt>Rh8+</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxb2+</dt><dd>match</dd>" & @CRLF & _
" <dt>Rxc3++</dt><dd>match</dd>" & @CRLF & _
" <dt>Bxc6++</dt><dd>match</dd>" & @CRLF & _
" <dt>d8=Q++</dt><dd>match</dd>" & @CRLF & _
"" & @CRLF & _
" <dt>2</dt><dd>no match</dd>" & @CRLF & _
" <dt>b</dt><dd>no match</dd>" & @CRLF & _
" <dt>i2</dt><dd>no match</dd>" & @CRLF & _
" <dt>a9</dt><dd>no match</dd>" & @CRLF & _
" <dt>5d</dt><dd>no match</dd>" & @CRLF & _
" <dt>K2</dt><dd>no match</dd>" & @CRLF & _
" <dt>Ki6</dt><dd>no match</dd>" & @CRLF & _
" <dt>Kf9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Qp3</dt><dd>no match</dd>" & @CRLF & _
" <dt>Qd9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Q3</dt><dd>no match</dd>" & @CRLF & _
" <dt>N</dt><dd>no match</dd>" & @CRLF & _
" <dt>Nz9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Na10</dt><dd>no match</dd>" & @CRLF & _
" <dt>B2</dt><dd>no match (watch case)</dd>" & @CRLF & _
" <dt>Bb</dt><dd>no match</dd>" & @CRLF & _
" <dt>Bi4</dt><dd>no match</dd>" & @CRLF & _
" <dt>Ri5</dt><dd>no match</dd>" & @CRLF & _
" <dt>Ra9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Sa2</dt><dd>no match</dd>" & @CRLF & _
" <dt>Zf3</dt><dd>no match</dd>" & @CRLF & _
" <dt>Jj2</dt><dd>no match</dd>" & @CRLF & _
" <dt>1-1</dt><dd>no match</dd>" & @CRLF & _
" <dt>0</dt><dd>no match</dd>" & @CRLF & _
" <dt>2-1</dt><dd>no match</dd>" & @CRLF & _
" <dt>0-1</dt><dd>no match</dd>" & @CRLF & _
" <dt>0-0-1</dt><dd>no match</dd>" & @CRLF & _
" <dt>0-0-0-0</dt><dd>no match</dd>" & @CRLF & _
" <dt>0--0</dt><dd>no match</dd>" & @CRLF & _
" <dt>bxa9</dt><dd>no match</dd>" & @CRLF & _
" <dt>hxi2</dt><dd>no match</dd>" & @CRLF & _
" <dt>Kxf9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Qxp3</dt><dd>no match</dd>" & @CRLF & _
" <dt>Nxz9</dt><dd>no match</dd>" & @CRLF & _
" <dt>Bxi4</dt><dd>no match</dd>" & @CRLF & _
" <dt>Rxi5</dt><dd>no match</dd>" & @CRLF & _
" <dt>a1=</dt><dd>no match</dd>" & @CRLF & _
" <dt>a2=Q</dt><dd>no match</dd>" & @CRLF & _
" <dt>b4=N</dt><dd>no match</dd>" & @CRLF & _
" <dt>d1=S</dt><dd>no match</dd>" & @CRLF & _
" <dt>d5=G</dt><dd>no match</dd>" & @CRLF & _
" <dt>exd5=G</dt><dd>no match</dd>" & @CRLF & _
" <dt>exd1=S</dt><dd>no match</dd>" & @CRLF & _
" <dt>bxa1=</dt><dd>no match</dd>" & @CRLF & _
" <dt>Rdxd2</dt><dd>no match</dd>" & @CRLF & _
" <dt>Rexe2</dt><dd>no match</dd>" & @CRLF & _
" <dt>R2xe2</dt><dd>no match</dd>" & @CRLF & _
" <dt>Bxi4++</dt><dd>no match</dd>"
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