aboutsummaryrefslogtreecommitdiffstats
path: root/src/parse/regex/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/regex/mod.rs')
-rw-r--r--src/parse/regex/mod.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/parse/regex/mod.rs b/src/parse/regex/mod.rs
index 79e234f..6b7bc9e 100644
--- a/src/parse/regex/mod.rs
+++ b/src/parse/regex/mod.rs
@@ -1,4 +1,4 @@
-use crate::parse::{NotImplementedKind, OtherHighlights};
+use crate::parse::OtherHighlights;
use super::{Parse, ParseError, Result};
@@ -234,18 +234,14 @@ fn parse_rep(s: &mut super::Cursor<'_>) -> Result<Pattern> {
s.adv();
s.highlight_from(begin, OtherHighlights::RegexSymbol);
- if s.has() && s.peek() == b'?' {
- return Err(ParseError::NotYetImplemented(
- NotImplementedKind::NonGreedyRegexRepetition,
- ));
- }
+ let greed = if s.has() && s.peek() == b'?' {
+ s.adv();
+ GreedyBehavior::NonGreedy
+ } else {
+ GreedyBehavior::Greedy
+ };
- Ok(Pattern::Rep(
- Box::new(atom),
- min_rep,
- max_rep,
- GreedyBehavior::Greedy,
- ))
+ Ok(Pattern::Rep(Box::new(atom), min_rep, max_rep, greed))
} else {
Ok(atom)
}