Opened 14 years ago
Closed 14 years ago
#2556 closed Bugs (fixed)
Perl regex replacement
| Reported by: | Owned by: | John Maddock | |
|---|---|---|---|
| Milestone: | Boost 1.38.0 | Component: | regex |
| Version: | Boost 1.37.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
I have code that reads a lookup table from memory and then attempts to search for the word found in the lookup table in some data using a regular expression:-
(.*\b)word(\b.*)
Where this matches I call replace with the following
$1WORD$2
This falls down when the word is "2lt" as I get the following to search for
(.*\b)2lt(\b.*)
With replacement
$12LT$2
What happens is it sees $12 as the substring to replace and since I only have two pairs of brackets in my regular expression $12 does not exist and so in effect the 2 in my input data is lost.
I am using Perl format regular expressions (boost::regex::perl)
In Perl I can resolve this by making the replacement
When I do this using boost I get the literal text as above output (including ${1} etc.) not the text that I expect. Since I've told Boost to use Perl syntax I would expect a regular expression replacement in Perl and Boost to behave the same way.
Is this a bug ?
Thanks Jon

Looks like a bug, or at least a missing feature.
Will fix.
John Maddock.