summaryrefslogtreecommitdiffstats
path: root/crates/regex/src/word.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/regex/src/word.rs')
-rw-r--r--crates/regex/src/word.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/crates/regex/src/word.rs b/crates/regex/src/word.rs
index 8f744516..1a75ba48 100644
--- a/crates/regex/src/word.rs
+++ b/crates/regex/src/word.rs
@@ -48,7 +48,7 @@ impl WordMatcher {
let original =
expr.with_pattern(|pat| format!("^(?:{})$", pat))?.regex()?;
let word_expr = expr.with_pattern(|pat| {
- let pat = format!(r"(?:(?-m:^)|\W)({})(?:(?-m:$)|\W)", pat);
+ let pat = format!(r"(?:(?m:^)|\W)({})(?:\W|(?m:$))", pat);
debug!("word regex: {:?}", pat);
pat
})?;
@@ -237,6 +237,8 @@ mod tests {
assert_eq!(Some((2, 5)), find(r"!?foo!?", "a!foo!a"));
assert_eq!(Some((2, 7)), find(r"!?foo!?", "##!foo!\n"));
+ assert_eq!(Some((3, 8)), find(r"!?foo!?", "##\n!foo!##"));
+ assert_eq!(Some((3, 8)), find(r"!?foo!?", "##\n!foo!\n##"));
assert_eq!(Some((3, 7)), find(r"f?oo!?", "##\nfoo!##"));
assert_eq!(Some((2, 5)), find(r"(?-u)foo[^a]*", "#!foo☃aaa"));
}