#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(?m)(\/\*[\s\S]*?\*\/|\/\/.*?$)|(?:\b(?=[A-Za-z][A-Za-z\d]*(?:_[A-Za-z\d]++)+\b)|\G(?<!\b))([A-Za-z\d])([A-Za-z\d]*)(?:_|\b)"
Local $sString = "_here _is an_EX4mple, thisisnot_, BUT_th1s_1s, also_not_, y_3_s_sir" & @CRLF & _
"" & @CRLF & _
"/* Ok, we are inside a comment so_this_does_not_count, nor_this" & @CRLF & _
"and_def_not_this" & @CRLF & _
"or_this */ outside_is_fair_game" & @CRLF & _
"" & @CRLF & _
"some other_stuff here /* another_multiline_comment */" & @CRLF & _
"" & @CRLF & _
"no_double__underscore but_yes_this not__this" & @CRLF & _
"this_comes_before // a single_line comment" & @CRLF & _
"" & @CRLF & _
"and stuff_aFTER_tHE_CoMmEnT, except 1cannot_start_with_a_number, and finally_" & @CRLF & _
"not_4cr0ss_mult1p13_l1nes"
Local $sSubst = "$1\U$2\L$3\E"
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