#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(?xm)^" & @CRLF & _
"(?<FirstLine> # First line capturing group" & @CRLF & _
" (?<Passport>P) # Passport character capturing group (P char, length 1)" & @CRLF & _
" (?<PassportType>.) # Passport Type (any char, generally <, length 1)" & @CRLF & _
" (?<IssuingCountry>[AFG]{3}) # To be completed with the ISO 3166-1 alpha-3 country codes (length 3)" & @CRLF & _
" # Or in alternative it can be checked for char only as" & @CRLF & _
" # (?<IssuingCountry>[A-Z<]{3}) if check state not necessary" & @CRLF & _
" (?<PassportOwner> # Passport owner capturing group !Does not check for length 39!" & @CRLF & _
" (?<Surname>[A-Z]+) # Surname, it has to be followed by <<" & @CRLF & _
" <<" & @CRLF & _
" (?<GivenName> # Given Name" & @CRLF & _
" (?:[A-Z]+<?)+" & @CRLF & _
" )" & @CRLF & _
" [<]+" & @CRLF & _
" ){1}" & @CRLF & _
")" & @CRLF & _
"\n" & @CRLF & _
"(?<SecondLine> # Second Line capturing group" & @CRLF & _
" (?<PassportNumber>[A-Z0-9<]{9}) # Passport number, length 9, padded with <" & @CRLF & _
" (?<CheckDigit19>[0-9]{1}) # Check digit for position 1 to 9" & @CRLF & _
" (?<Nationality>\g{IssuingCountry}) # Nationality, follows the same rule as match group 4" & @CRLF & _
" (?<DoB> # Date Of Birth" & @CRLF & _
" (?<DoBYear>[0-9]{2})" & @CRLF & _
" (?<DoBMonth>(?:0[1-9]|1[0-2]))" & @CRLF & _
" (?<DoBDay>(?:0[1-9]|(?:1|2)[0-9]|3[01]))" & @CRLF & _
" )" & @CRLF & _
" (?<CheckDigit1419>[0-9]) # Check digit for position 14 to 19" & @CRLF & _
" (?<Sex>[MF<]) # Sex (Male, Female or not defined)" & @CRLF & _
" (?<Expiral> # Expiral date" & @CRLF & _
" (?<ExpiralYear>[0-9]{2}) # W" & @CRLF & _
" (?<ExpiralMonth>(?:0[1-9]|1[0-2]))" & @CRLF & _
" (?<ExpiralDay>(?:0[1-9]|(?:1|2)[0-9]|3[01]))" & @CRLF & _
" )" & @CRLF & _
" (?<CheckDigit2227>[0-9]) # Check digit for position 22 to 27" & @CRLF & _
" (?<PersonalNumber>[A-Z0-9<]{14}) # Personal number padded with <" & @CRLF & _
" (?<CheckDigit2942>[0-9<]) # Check digit for position 29 to 42 (can be < empty)" & @CRLF & _
" (?<CheckDigitF>[0-9]) # Check digit" & @CRLF & _
")" & @CRLF & _
"$"
Local $sString = "P<AFGERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<" & @CRLF & _
"L898902C<3AFG6908061F9406236ZE184226B<<<<<14" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
""
Local $sSubst = ""
Local $sResult = StringRegExpReplace($sString, $sRegex, $sSubst)
MsgBox($MB_SYSTEMMODAL, "Result", $sResult)
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