#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(?mi)(?P<first>^(?P<intend>\s*?)diagGetParameterRaw.+?(?P<diagresp>\w.+?),.*?\"SecurityClass\", (?P<first_rest>.+?;(?P<newline>[\n\r]+)))(?P<second>(?P<second_start>\s*?_DiagGenerateKeyFromSeed.+.?buffer,).+?(?P<second_rest>0x\d+?,.+))"
Local $sString = "// diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);" & @CRLF & _
"// _DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;" & @CRLF & _
"*******" & @CRLF & _
"diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);" & @CRLF & _
"_DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;" & @CRLF & _
" diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);" & @CRLF & _
" _DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;" & @CRLF & _
"****************" & @CRLF & _
" RawDiagGetParameterRaw(transition_1_0_0_Resp, 16, 64, buffer, 4096);" & @CRLF & _
" _DiagGenerateKeyFromSeed (buffer, 8, 0x11, "BR120x", "", op1, 6, _length); length = 6;" & @CRLF & _
""
Local $sSubst = "\g<newline>\g<intend>\g<newline>//\g<intend>removed the next two lines as diva uses only one of our three parameters\g<newline>//\g<first>//\g<second>\g<newline>//\g<intend>\g<newline>//\g<intend>this works correctly:\g<newline>\g<intend>\g<newline>\g<intend>RawDiagGetParameterRaw ( \g<diagresp>, 16, 64, \g<first_rest>\g<second_start> 8, \g<second_rest>\g<newline>\g<newline>//\g<intend>replacement ends here\g<newline>\g<intend>"
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