2013-04-04 61 views
0

我有一个问题,在正则表达式匹配正则表达式 - 比赛@functin [args1 | args2]

某种模式
  • 案例1:@Function []
  • 案例2:@Function [args1 | args2]
  • 案例3:@Function

我想这个结果

  • 案例1:1趣ction 2-
  • 情况2:1 - 功能2-args1 | args2
  • 情况3:1-功能2-

我两个第一图案与\@(.?*)\[(.?*)\]但不是第三匹配。

谢谢你的时间。 奥宾

+0

你的模式或答案怎么没有在其中使用“功能”这个词......它可以是任何东西? – 2013-04-04 08:10:13

回答

1
\@([^[\]]+)(?:\[(.*?)\])? 

(顺便说一句,你犯了一个错误,而写在这里您正则表达式我想,你写道:.?*

编辑:忘了第二个捕获组。

编辑2:至于以前没有工作的原因,第一组的懒惰运营商确保获得最小的匹配。所以第二部分是在第一个匹配的“”(没有)的情况下进行测试的,而且它也是成功的,因为它有一个?运营商。

+0

+1对不正确的懒惰消费也有很好的吸引力。 – Sepster 2013-04-04 07:49:18

+0

这似乎是错误的这正则表达式不匹配任何东西.. – Fassbender 2013-04-04 08:05:14

+1

@AubinLorieux对不起,这显然是错误的是:)纠正和工作。 – Loamhoof 2013-04-04 08:07:51