Jump to content

Recommended Posts

Posted

As regex101.com says:

/(((?<=^|[^\\])(?:\\\\)+)|()(?<=^|[^\\]))[^\\]/
        1st Capturing group (((?<=^|[^\\])(?:\\\\)+)|()(?<=^|[^\\]))
            1st Alternative: ((?<=^|[^\\])(?:\\\\)+)
                2nd Capturing group ((?<=^|[^\\])(?:\\\\)+)
                    (?<=^|[^\\]) Positive Lookbehind - Assert that the regex below can be matched
                        1st Alternative: ^
                            ^ assert position at start of the string
                        2nd Alternative: [^\\]
                            [^\\] match a single character not present in the list below
                                \\ matches the character \ literally
                    (?:\\\\)+ Non-capturing group
                        Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
                        \\ matches the character \ literally
                        \\ matches the character \ literally
            2nd Alternative: ()(?<=^|[^\\])
                3rd Capturing group ()
                    (null, matches any position)
                (?<=^|[^\\]) Positive Lookbehind - Assert that the regex below can be matched
                    1st Alternative: ^
                        ^ assert position at start of the string
                    2nd Alternative: [^\\]
                        [^\\] match a single character not present in the list below
                            \\ matches the character \ literally
        [^\\] match a single character not present in the list below
            \\ matches the character \ literally

I'd call it tricky at best :blink:

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Posted

Bah...  it's a try to do it using only one SRER and no other functions  :)
But it's not much more tricky than nested SRER
The more robust way could be a workaround anyway

$sVar = "000\a\aa\\bbb\\\ccc\\\\ddd\\\\\eee\\\\\\fff\\\\\\\ggg"
;expected result:   ...\a\a.\\...\\\c..\\\\....\\\\\e..\\\\\\...\\\\\\\\g..

; nested SRER
$sOut = StringRegExpReplace(StringRegExpReplace($sVar, '(?<=^|[^\\])[^\\]', "."), '((?<=^|[^\\])(?:\\\\)+)[^\\]', "$1.")
Msgbox(0,"1", $sOut)

; workaround
$r = "#"  ; temporary replacement char
$tmp1 = StringReplace($sVar, '\\', $r&$r)
$tmp2 = StringRegExpReplace($tmp1, '(?<!\\)[^\\' & $r & ']', ".")
$sOut = StringReplace($tmp2, $r&$r, '\\')
Msgbox(0,"2", $sOut)

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...