Skip to content

Commit 4d68165

Browse files
committed
regular_expression_matching
1 parent e6d43a1 commit 4d68165

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

Cargo.lock

Lines changed: 110 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ version = "0.1.0"
44
authors = ["u2 <zhangyaning1985@gmail.com>"]
55

66
[dependencies]
7+
regex = "0.2"

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#![feature(test)]
22
extern crate test;
3+
extern crate regex;
4+
35
pub mod two_sum;
46
pub mod add_two_numbers;
57
pub mod length_of_longest_substring;
@@ -9,3 +11,4 @@ pub mod zigzag_conversion;
911
pub mod reverse_integer;
1012
pub mod atoi;
1113
pub mod palindrome_number;
14+
pub mod regular_expression_matching;

src/regular_expression_matching.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use regex::Regex;
2+
3+
pub fn regular_expression_matching(string: &str, reg: &str) -> bool {
4+
let re = Regex::new(["^", reg, "$"].join("").as_str()).unwrap();
5+
re.is_match(string)
6+
}
7+
8+
#[cfg(test)]
9+
mod test {
10+
use super::regular_expression_matching;
11+
12+
#[test]
13+
fn test_regular_expression_matching() {
14+
assert_eq!(regular_expression_matching("aa", "a"), false);
15+
16+
assert_eq!(regular_expression_matching("aa", "aa"), true);
17+
18+
assert_eq!(regular_expression_matching("aaa", "aa"), false);
19+
20+
assert_eq!(regular_expression_matching("aa", "a*"), true);
21+
22+
assert_eq!(regular_expression_matching("aa", ".*"), true);
23+
24+
assert_eq!(regular_expression_matching("ab", ".*"), true);
25+
26+
assert_eq!(regular_expression_matching("aab", "c*a*b"), true);
27+
}
28+
}

0 commit comments

Comments
 (0)