やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rustで正規表現(regex 1)

 例によって標準モジュールにはない。

成果物

crates.io

クレート新規作成

$ cargo new regex_hello --bin

Cargo.toml

[dependencies]
regex = "1"

 初回ビルドでダウンロード&コンパイル。2分かかった。

$ cargo build
    Updating crates.io index
   Compiling memchr v2.2.1
   Compiling lazy_static v1.3.0
   Compiling ucd-util v0.1.5
   Compiling utf8-ranges v1.0.3
   Compiling thread_local v0.3.6
   Compiling regex-syntax v0.6.10
   Compiling aho-corasick v0.7.4
   Compiling regex v1.2.0
   Compiling regex_hello v0.1.0 (/tmp/work/Rust.Regex.20190729131335/src/0/regex_hello)
    Finished dev [unoptimized + debuginfo] target(s) in 2m 10s

main.rs

use regex::Regex;

fn main() {
    let re = Regex::new(r"(?x)
(?P<year>\d{4})  # the year
-
(?P<month>\d{2}) # the month
-
(?P<day>\d{2})   # the day
").unwrap();
    let caps = re.captures("2010-03-14").unwrap();

    assert_eq!("2010", &caps["year"]);
    assert_eq!("03", &caps["month"]);
    assert_eq!("14", &caps["day"]);
}
$ cargo run

 エラーなし。成功!

 ちなみに、一行で表現すると以下。

let re = Regex::new(r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})").unwrap();

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

前回まで