$ rustc --version
rustc 0.13.0-nightly (1c3ddd297 2014-10-13 23:27:46 +0000)
#![feature(phase)]
#[phase(plugin)]
extern crate regex_macros;
extern crate regex;
fn main() {
let re = regex!(r#"([^\s])"#);
println!("\n1 {} on '1 2 3'", re);
for cap in re.captures_iter("1 2 3") {
println!("0: {}, 1: {}", cap.at(0), cap.at(1));
}
let re = regex!(r#"([^\s,])"#);
println!("\n2 {} on '1 2 3'", re);
for cap in re.captures_iter("1 2 3") {
println!("0: {}, 1: {}", cap.at(0), cap.at(1));
}
let re = regex!(r#"([^A,])"#);
println!("\n3 {} on '1A2A3'", re);
for cap in re.captures_iter("1A2A3") {
println!("0: {}, 1: {}", cap.at(0), cap.at(1));
}
let re = regex!(r#"([^[:alpha:],])"#);
println!("\n4 {} on '1A2A3'", re);
for cap in re.captures_iter("1A2A3") {
println!("0: {}, 1: {}", cap.at(0), cap.at(1));
}
let re = regex!(r#"([^[:alpha:]Z])"#);
println!("\n5 {} on '1A2A3'", re);
for cap in re.captures_iter("1A2A3") {
println!("0: {}, 1: {}", cap.at(0), cap.at(1));
}
}
1 ([^\s]) on '1 2 3'
0: 1, 1: 1
0: 2, 1: 2
0: 3, 1: 3
2 ([^\s,]) on '1 2 3'
0: 1, 1: 1
0: , 1:
0: 2, 1: 2
0: , 1:
0: 3, 1: 3
3 ([^A,]) on '1A2A3'
0: 1, 1: 1
0: 2, 1: 2
0: 3, 1: 3
4 ([^[:alpha:],]) on '1A2A3'
0: 1, 1: 1
0: A, 1: A
0: 2, 1: 2
0: A, 1: A
0: 3, 1: 3
5 ([^[:alpha:]Z]) on '1A2A3'
0: 1, 1: 1
0: A, 1: A
0: 2, 1: 2
0: A, 1: A
0: 3, 1: 3
Cases 2, 4, 5 have the misbehavior. My expectation is that every case should have the same result as 1 and 3.