1

我希望在一个更大的正则表达式中创建几个子表达式,其中每个子表达式匹配输入中一个位置或另一个位置的某些内容,但不是在两个位置,最好每个“感兴趣区域”使用相同的命名组。例如,我想匹配下面斜体的体积单位和粗体显示的货币单位。

  • 3.23美元/加仑
  • 3.23美元(加仑)
  • 4.50加元/加仑
  • 1加仑@ 3.23美元
  • 10加仑。@ 4.50加元

或更一般地说:

  • 东西更多的东西XXX更多的东西
  • 东西XXX更多东西

其中stuffmorestuff可能是一组复杂的子表达式。

似乎有可能使用一些组合

  • 组堆栈推送/弹出
  • 平衡组
  • 看看周围

但我不确定如何进行。它是否归结为交替(|)或具有不同表达的多次传递(我认为这相当于同一件事)?

4

1 回答 1

1

您可能必须使用交替,像这样?

^(stuffmorestuff)XXX(yetmorestuff)|(stuff)XXX(morestuff)$

但是您最终会得到四个捕获组。如果您对多个组使用相同的组名,则不确定 .NET 正则表达式引擎的行为方式。

于 2011-12-02T22:59:30.043 回答