// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?m)^[A-Z](([A-Z]{1,2}[a-z0-9]+)+([A-Z]{1,3}[a-z0-9]+)*[A-Z]{0,3}|([a-z0-9]+[A-Z]{0,3})*|[A-Z]{1,2})$").unwrap();
let string = "ABCD
ABCDE
snake_case
camelCase
2PascalCase
streamIOIO
gREATERDtha
MdeADFAFdsADFads
DeviceSNSD
AabcABCD
AabcABCDabcABCD
ABabcABCD
ABabcABCDabcABCD
ABCabcABCD
ABCabcABCDabcABCDabcABCDabcABCD
ABCDabcABCD
ABCDabcABCDabcABCDabcABCDabcABCD
HTMLParser
ContextHTMLParser
ABabcABCDbcABC
ABCDabcABC
ABCDabcAB
ABCDabcA
CamelCa_1
HELLO
AaABC
PacalCasePacalCasePacalCasePacalCasePacalCasePacalCase
AabcABCabcABC
MoeADFdsADFads
ABCabcABC
ABCabcAB
ABabcABC
ABabcAB
AabcAB
ABCabcABCabcA
ABCabcA
Aabc123
AabcABC
A
AB
ABC
StreamIO
IOStream
DeviceID
DeviceSNS
Context
PascalCase
Pascal2Case
PascalCaseA
Pascal2CaseA
ModeA
Mode2A
Mode2A2
Mode2A2A
CreateAMode
CreateBMode
MadeEasy
WonderFul
AndMe
HtmlParser
H
AaA
Camel01C
Camel01c01
Camel01C01
Camel01CC01
Camel0a1c1
Camel0a1C1
Camel0ac1b1C1
CamelC
CamelC1
CamelCA
CamelCa1
IbsReleaseTestVerificationRegressionSuite
IbsReleaseTestVerificationRegressioNSuite
IbsReleaseTestVerificationRegressioN
XmlHttpRequest
NewCustomerId
InnerStopwatch
SupportsIpv6OnIos
YouTubeImporter
YoutubeImporter
Affine3D";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/