https://bugs.exim.org/show_bug.cgi?id=1679
Bug ID: 1679 Summary: Ability to explicitly specify what to capture (feature request) Product: PCRE Version: N/A Hardware: All OS: All Status: NEW Severity: wishlist Priority: medium Component: Code Assignee: p...@hermes.cam.ac.uk Reporter: henrik.h...@aol.de CC: pcre-dev@exim.org Hello, it would be very helpful to be able to explicitly specify what the group being in should capture. You should be able to specify original and other capture strings when specifying what to capture for a group. The modified capture string would be available for the replacement string. I'm unsure whether following groups in the regular expression should see the original or the modified capture string. This feature is useful when doing find-and-replace according to a list--let me put it like this--with two columns. I.e., replace A with B, C with D and E with F. How else would you want to accomplish this than speciying the replacements in the regular expression? So, I think, it's appropriate. I tried to use existing features with Perl--with semi-satisfying results. This Perl script does the job: > print (("apple, cherry, lemon" =~ s/ > \bapple\b > (*MARK:pear) > | > \bcherry\b > (*MARK:strawberry) > | > \blemon\b > (*MARK:lime) > /$REGMARK/xgr) . "\n"); Output: > pear, strawberry, lime This also works: > print (("a1a" =~ s/ > \d > (*MARK:() > /$REGMARK/xgr) . "\n"); This doesn't work: > print (("a1a" =~ s/ > \d > (*MARK:\)) > /$REGMARK/xgr) . "\n"); POSSIBLE SYNTAX Subject string: > apple, cherry, lemon Regular expression with replacement syntax: > (?x) > \bapple\b > (*CAPTURE: > $0\ \(pear\) > ) > | > \bcherry\b > (*CAPTURE: > $0\ \(strawberry\) > ) > | > \blemon\b > (*CAPTURE: > $0\ \(lime\) > ) Regular expression with consistent syntax: > (?x) > \bapple\b > (*CAPTURE: > \g{0}\ \(pear\) > ) > | > \bcherry\b > (*CAPTURE: > \g{0}\ \(strawberry\) > ) > | > \blemon\b > (*CAPTURE: > \g{0}\ \(lime\) > ) Replacement string: > $0 Result: > apple (pear), cherry (strawberry), lemon (lime) Are there any doubts/objections/contradictions? -- You are receiving this mail because: You are on the CC list for the bug. -- ## List details at https://lists.exim.org/mailman/listinfo/pcre-dev