RegEx - 匹配两个条件中的任何一个

时间:2015-08-20 08:57:46

标签: regex

我有以下字符串:

@Function1['param1', -100, 'param3'] * 120 + @Function2 - 15.5

此处@Function1@Function2是函数名称,可以是任何单词([a-z] +)。函数名称始终以@开头。

我们如何编写一个RegEx表达式,以便我得到两个函数:

@Function1['param1', -100, 'param3']
@Function2

如果函数名称后跟[,那么我需要一切到下一个],否则只需要函数名称。

我尝试了以下正则表达式,但它最多只能用于1个参数。它在具有参数的函数名之后的第一个逗号处停止。

@[^\s\]]+?[\s\]]

修改

我认为这可以胜任,但不确定我会错过任何案件吗?

@\w+?(?:\[.+?\])?(?:\s)

2 个答案:

答案 0 :(得分:0)

另一种可能的解决方案:

\@\w*(\s|\[.*])

设置全局标志

答案 1 :(得分:0)

我想我应该回答我自己的问题。 (抱歉发布问题而不是太努力)

这是我能做的最好的事情:

@\w+?(?:\[[^]]+?\])?(?=\s)

它与函数名称匹配,然后[]之间的任何内容都是可选的。搜索以下一个空格结束。