-
Notifications
You must be signed in to change notification settings - Fork 484
Closed
Labels
Description
Example code:
use regex::Regex;
fn main() {
let re = Regex::new(r"a(.*)f").unwrap();
println!("{}", re.replace("asdf", "<$1a>"));
}This prints "<>". However, "1a" isn't a valid capture group name (i.e. if you use it like (?P<1a>...) it would panic). When used in a replace expression like the one above, the name "1a" is accepted by the parser (which in theory it shouldn't), and doesn't cause an error to be returned or panic.
The ideal way to solve this is make the parser only accept \$\d+ or \$\w[\w\d]* as valid capture groups.
This originally comes from chmln/sd#44.
chmln