Hello, a minimal test case to investigate 1c41f98 that bisect pointed to. Dash "-" in character [range] is treated literally. The patch is: - if (!in_brace_param) - in_brace_param = bct; + if (!in_brace_param) { + if ((in_brace_param = bct)) + seen_brct = 0; + } The result of script is (first line – not matched, no ^G etc. replacement): this module ^GON-THE-FLY^_, without list restart this module ONTHEFLY, without list restart Script contains alternative [^x-ya] pattern that works (and [^ax-y] that doesn't). -- Sebastian Gniazdowski psprint3@fastmail.com