想象一下,我有字符串
abcD
我希望从中提取abc
。我想过用
^(.+)D$
然而,在匹配group1时,不仅包括abc
,还包括abcD
- 如何使.+
更少贪婪,因此D
不包含在群组中?我知道我可以使用[^D]+
,但这真的是唯一的方法吗?
对不起,这是一个糟糕的测试用例。 看看这个示例(Java):
Pattern pattern = Pattern.compile("^(\\{(.+?)\\})?$");
Matcher matcher = pattern.matcher("{a}{b}");
System.out.println(matcher.matches()); // true
为什么这匹配?正则表达式不应该只允许字符串中的一个{
和一个}
吗?我只希望{< not } >}
之类的内容匹配。
答案 0 :(得分:2)
为了使量词不那么贪心,你可以在量词之后添加?
:
^(.+?)D$
但这取决于您的语言或文本编辑器。不同的正则表达式引擎支持不同的功能。
答案 1 :(得分:0)