#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)^(?:(?P<type>(?:feat)|(?:fix)|(?:docs)|(?:style)|(?:refactor)|(?:test)|(?:merge)|(?:chore))(?: \((?P<issue>.+)\))?: (?P<subject>[A-Z0-9].{0,48}(?!\.).?)\n?)(?:\n(?P<body>(?:.*\n?)+))*$"
Local $sString = "feat: Summarize changes in around 50 characters or less" & @CRLF & _
"" & @CRLF & _
"More detailed explanatory text, if necessary. Wrap it to about 72" & @CRLF & _
"characters or so. In some contexts, the first line is treated as the" & @CRLF & _
"subject of the commit and the rest of the text as the body. The" & @CRLF & _
"blank line separating the summary from the body is critical (unless" & @CRLF & _
"you omit the body entirely); various tools like `log`, `shortlog`" & @CRLF & _
"and `rebase` can get confused if you run the two together." & @CRLF & _
"" & @CRLF & _
"Explain the problem that this commit is solving. Focus on why you" & @CRLF & _
"are making this change as opposed to how (the code explains that)." & @CRLF & _
"Are there side effects or other unintuitive consequences of this" & @CRLF & _
"change? Here's the place to explain them." & @CRLF & _
"" & @CRLF & _
"Further paragraphs come after blank lines." & @CRLF & _
"" & @CRLF & _
" - Bullet points are okay, too" & @CRLF & _
"" & @CRLF & _
" - Typically a hyphen or asterisk is used for the bullet, preceded" & @CRLF & _
" by a single space, with blank lines in between, but conventions" & @CRLF & _
" vary here" & @CRLF & _
"" & @CRLF & _
"If you use an issue tracker, put references to them at the bottom," & @CRLF & _
"like this:" & @CRLF & _
"" & @CRLF & _
"Resolves: #123" & @CRLF & _
"See also: #456, #789"
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