2015-11-20 38 views
1

我正在开发新的特定语法。在它有两种代码:哪个正则表达式可以匹配那些值?

=+-(一个或几个加,减或连续等号);

正则表达式为/[+=-]+/

II6:+15:-999:=(任意整数,接着是一个加号,减号或等号);

正则表达式为/\d+:[+=-]/

在一个条目中可能有任何数量的这些令牌。
每个新条目都必须用括号括起来:[code here]
括号内代码的种类可能彼此相邻:[=6:+-][15:-++=3:+]
空条目不允许使用。

所以,我不能使正则表达式匹配正确的条目!
我试过这一个/\[([=+-]*(\d+:[=+-])?[=+-]*)\]/,但它也匹配[],而它是一个整数。


MATCH任何这些

[=]  [---]  [+=-]  [=+-]  [17:=]  [==+-]  [6:=-]  [+5:=-] 

[==-=+] [+=====-] [15:-++=3:+] [=======] [+=-+==-] [---==--] [==-=+==] [=--==--] 

敌不过

[] [=:1] [:2+] [3-:] 
+0

正则表达式在什么环境/语言/工具?语法各不相同。 –

+0

@TomZych:我暂时使用Sublime Text而没有任何编译器/解释器。 –

回答

0

OMG,这可能是方式更简单:

\[(?:(?:\d+:)?[+=-])+\] 

我简直不敢相信我是那么愚蠢。

1

我不知道这应该对几乎所有这些工作是什么味道正则表达式,但:

\[((?:[+=-]+|[+=-]?\d+:[+=-]+)+)\] 

Regular expression visualization

Debuggex Demo

它利用|或操作数,所以无论是捕捉一种比赛(的-+=迹象收集或用冒号的数量和这样)

而且,似乎因为你想[+5:=-]匹配,我添加了一个[+-]?匹配。编辑: 这允许多次出现的语言。然而,这可能是微不足道的,因为代码的不同部分之间没有区别。

+0

它可能是'[+5:= - ]'或'[-5:= - ]'或'[= 5:= - ]'。 –

+0

然后在这些括号中加上'='符号,你应该很好。另外,我改变了'[+ = - ]'有一个'+'标记 –

+0

不幸的是,这不适用于'[+ = - 5:= - 6:= - ]'这样的复杂条目。但简单的就好了。 –