수색…
소개
Rust의 표준 라이브러리에는 정규 표현식 파서 / 정규 표현자가 포함되어 있지 않지만,
regex
상자 ( 녹스빌 보육원 에 있으므로 준 공식)는 정규 표현식 파서를 제공합니다. 이 섹션에서는 일반적인 상황에서 regex
크레이트를 사용하는 방법에 대한 개요와 크레이트를 사용하는 동안 필요한 설치 지침 및 기타 유용한 참고 사항을 제공합니다.
단순 검색 및 검색
tust에 대한 정규 표현식 지원은 regex
crate가 제공 Cargo.toml
추가하십시오.
[dependencies]
regex = "0.1"
regex
상자의 기본 인터페이스는 regex::Regex
:
extern crate regex;
use regex::Regex;
fn main() {
//"r" stands for "raw" strings, you probably
// need them because rustc checks escape sequences,
// although you can always use "\\" withour "r"
let num_regex = Regex::new(r"\d+").unwrap();
// is_match checks if string matches the pattern
assert!(num_regex.is_match("some string with number 1"));
let example_string = "some 123 numbers";
// Regex::find searches for pattern and returns Option<(usize,usize)>,
// which is either indexes of first and last bytes of match
// or "None" if nothing matched
match num_regex.find(example_string) {
// Get the match slice from string, prints "123"
Some(x) => println!("{}", &example_string[x.0 .. x.1]),
None => unreachable!()
}
}
그룹 캡처
extern crate regex;
use regex::Regex;
fn main() {
let rg = Regex::new(r"was (\d+)").unwrap();
// Regex::captures returns Option<Captures>,
// first element is the full match and others
// are capture groups
match rg.captures("The year was 2016") {
// Access captures groups via Captures::at
// Prints Some("2016")
Some(x) => println!("{:?}", x.at(1)),
None => unreachable!()
}
// Regex::captures also supports named capture groups
let rg_w_named = Regex::new(r"was (?P<year>\d+)").unwrap();
match rg_w_named.captures("The year was 2016") {
// Named capures groups are accessed via Captures::name
// Prints Some("2016")
Some(x) => println!("{:?}", x.name("year")),
None => unreachable!()
}
}
교체
extern crate regex;
use regex::Regex;
fn main() {
let rg = Regex::new(r"(\d+)").unwrap();
// Regex::replace replaces first match
// from it's first argument with the second argument
// => Some string with numbers (not really)
rg.replace("Some string with numbers 123", "(not really)");
// Capture groups can be accesed via $number
// => Some string with numbers (which are 123)
rg.replace("Some string with numbers 123", "(which are $1)");
let rg = Regex::new(r"(?P<num>\d+)").unwrap();
// Named capture groups can be accesed via $name
// => Some string with numbers (which are 123)
rg.replace("Some string with numbers 123", "(which are $num)");
// Regex::replace_all replaces all the matches, not only the first
// => Some string with numbers (not really) (not really)
rg.replace_all("Some string with numbers 123 321", "(not really)");
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow