#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?ms)(?:\G|<saml:Attribute\s*+Name="example"[^\/>]*+>)(?:\s*+<saml:AttributeValue\s*+xsi:type="xs:string"[^\/>]*+>(?<value>[^<]*+)<\/saml:AttributeValue[^>]*+>|\s*+<[^\/][^\/>]*+>[^<]*+<\/[^>]*+>|\s*+<[^\/][^>\/]*+\/>)"
Local $sString = "<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_8e8dc5f69a98cc4c1ff3427e5ce34606fd672f91e6" Version="2.0" IssueInstant="2014-07-17T01:01:48Z" Destination="http://sp.example.com/demo1/index.php?acs" InResponseTo="ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685">" & @CRLF & _
" <saml:Issuer>http://idp.example.com/metadata.php</saml:Issuer>" & @CRLF & _
" <samlp:Status>" & @CRLF & _
" <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>" & @CRLF & _
" </samlp:Status>" & @CRLF & _
" <saml:Assertion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" ID="_d71a3a8e9fcc45c9e9d248ef7049393fc8f04e5f75" Version="2.0" IssueInstant="2014-07-17T01:01:48Z">" & @CRLF & _
" <saml:Issuer>http://idp.example.com/metadata.php</saml:Issuer>" & @CRLF & _
" <saml:Subject>" & @CRLF & _
" <saml:NameID SPNameQualifier="http://sp.example.com/demo1/metadata.php" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">_ce3d2948b4cf20146dee0a0b3dd6f69b6cf86f62d7</saml:NameID>" & @CRLF & _
" <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">" & @CRLF & _
" <saml:SubjectConfirmationData NotOnOrAfter="2024-01-18T06:21:48Z" Recipient="http://sp.example.com/demo1/index.php?acs" InResponseTo="ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685"/>" & @CRLF & _
" </saml:SubjectConfirmation>" & @CRLF & _
" </saml:Subject>" & @CRLF & _
" <saml:Conditions NotBefore="2014-07-17T01:01:18Z" NotOnOrAfter="2024-01-18T06:21:48Z">" & @CRLF & _
" <saml:AudienceRestriction>" & @CRLF & _
" <saml:Audience>http://sp.example.com/demo1/metadata.php</saml:Audience>" & @CRLF & _
" </saml:AudienceRestriction>" & @CRLF & _
" </saml:Conditions>" & @CRLF & _
" <saml:AuthnStatement AuthnInstant="2014-07-17T01:01:48Z" SessionNotOnOrAfter="2024-07-17T09:01:48Z" SessionIndex="_be9967abd904ddcae3c0eb4189adbe3f71e327cf93">" & @CRLF & _
" <saml:AuthnContext>" & @CRLF & _
" <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>" & @CRLF & _
" </saml:AuthnContext>" & @CRLF & _
" </saml:AuthnStatement>" & @CRLF & _
" <saml:AttributeStatement>" & @CRLF & _
" <saml:Attribute Name="uid" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">" & @CRLF & _
" <saml:AttributeValue xsi:type="xs:string">test</saml:AttributeValue>" & @CRLF & _
" </saml:Attribute>" & @CRLF & _
" <saml:Attribute Name="mail" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">" & @CRLF & _
" <saml:AttributeValue xsi:type="xs:string">test@example.com</saml:AttributeValue>" & @CRLF & _
" </saml:Attribute>" & @CRLF & _
" <saml:Attribute Name="example" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">" & @CRLF & _
" <saml:AttributeValue xsi:type="xs:string">users</saml:AttributeValue>" & @CRLF & _
" <saml:AttributeValue xsi:type="xs:string">examplerole1</saml:AttributeValue>" & @CRLF & _
" </saml:Attribute>" & @CRLF & _
" </saml:AttributeStatement>" & @CRLF & _
" </saml:Assertion>" & @CRLF & _
"</samlp:Response>"
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