我正在开发新的特定语法。其中有两种代码:
我:=
或+
或-
(连续一个或多个加号,减号或等号);
正则表达式为/[+=-]+/
。
II :6:+
或15:-
或999:=
(任意整数,后跟一个加号,减号或等号);
正则表达式为/\d+:[+=-]/
。
在一个条目中,可能存在任何数量的这些代币
每个新条目都必须用括号括起来:[code here]
括号中的各种代码可以彼此相邻:[=6:+-]
或[15:-++=3:+]
等
不允许空条目。
所以,我不能使正则表达式匹配正确的条目!
我已尝试过这一个/\[([=+-]*(\d+:[=+-])?[=+-]*)\]/
,但它也匹配[]
,而它是一个ггог。
MATCH 其中任何
[=] [---] [+=-] [=+-] [17:=] [==+-] [6:=-] [+5:=-]
[==-=+] [+=====-] [15:-++=3:+] [=======] [+=-+==-] [---==--] [==-=+==] [=--==--]
没有比赛
[] [=:1] [:2+] [3-:]
答案 0 :(得分:1)
我不知道什么样的正则表达式,但这应该适用于几乎所有这些:
\[((?:[+=-]+|[+=-]?\d+:[+=-]+)+)\]
它使用|
或操作数,因此它捕获一种匹配(-+=
符号的集合或冒号等的数字)
此外,似乎由于您希望[+5:=-]
匹配,我添加了[+-]?
以匹配该内容。
编辑: 这允许多次出现该语言。然而,这可能是微不足道的,因为没有什么可以区分代码的不同部分。
答案 1 :(得分:0)