0

想象一下我有字符串

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 } >}想要匹配的东西。

4

2 回答 2

2

为了使量词不那么贪婪,你?在量词之后添加一个:

^(.+?)D$

不过,这取决于您的语言或文本编辑器。不同的正则表达式引擎支持不同的功能。

于 2013-04-07T18:42:26.223 回答
0

“D”不包含在第一组中,它包含在完整的模式匹配中。

第一组是“abc”。

您可以在http://rubular.com/r/oSnF17Jd39看到一个演示

于 2013-04-07T18:45:29.367 回答