1

我有 .Net Regex ([abc][e])+([abc]) 但是当我尝试匹配时,它只匹配几个字符而不是组中的整个字符串。

这是我的输入和所需的输出组

  • aebeceaxyz - 第 1 组 (aebece),第 2 组 (a)
  • aebecebxyz - 第 1 组 (aebece),第 2 组 (b)
  • aebececxyz - 第 1 组 (aebece),第 2 组 (c)
  • beceaecxyz - 第 1 组 (beceae),第 2 组 (c)

在我的正则表达式中,我得到了 (ce)(a)/(ce)(b)/(ce)(c)/(ae)(/c) 的结果,这不是我想要的。

4

3 回答 3

2

您在第一组中获得了 [abc][e] 的第一场比赛,但是您想在要捕获的整个组周围包裹一些括号。此外,您可以使用 ?: 使内部组不被捕获。这应该会给出您正在寻找的结果:

((?:[abc][e])+)([abc])
于 2012-07-12T18:57:22.177 回答
0

尝试([abce]{5}[e])+([abc])

您正在尝试的正则表达式未指定第一组中的重复次数

你也可以只拥有([abce]{6})+([abc]),除非你真的想确保第一组以'e'结尾

于 2012-07-12T18:52:37.590 回答
0

您可以使用 ([abc][e]).*([abc]) 吗?

于 2012-07-12T18:56:15.557 回答