#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(?s)\b(X\d{2})(?:(?!X\d{2}).)*["\s]([^"\s]+\.dun)+|(?:(?!X\d{2}).)*"
Local $sString = "X12 " & @CRLF & _
"" & @CRLF & _
"Source =asdjkasjd" & @CRLF & _
" file="x/y1.dun"" & @CRLF & _
" "x/y2.dun"" & @CRLF & _
" "x/y3.dun"" & @CRLF & _
"" & @CRLF & _
"asds12" & @CRLF & _
"" & @CRLF & _
" X22" & @CRLF & _
" p/q/xy.dun" & @CRLF & _
"asda=23" & @CRLF & _
"" & @CRLF & _
"source =asdf" & @CRLF & _
"" & @CRLF & _
" X44" & @CRLF & _
"1000" & @CRLF & _
"1001" & @CRLF & _
" file="abc.dun""
Local $sSubst = "$1\t\t$2\n"
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