哪个正则表达式可以匹配这些值?
Which regex could match those values?
我正在开发新的特定语法。其中有两种代码:
I: =
or +
or -
(一个或几个连续的加号、减号或等号);
正则表达式为 /[+=-]+/
。
II: 6:+
or 15:-
or 999:=
(任意整数,后跟一个加号、减号或等号);
正则表达式是 /\d+:[+=-]/
。
在一个条目中可能有任何数量的任何这些令牌。
每个新条目都必须用方括号括起来:[<i>代码在这里</i>]
.
括号中的代码种类可以并排排列:[=6:+-]
或[15:-++=3:+]
等
不允许输入空条目。
所以,我无法制作正则表达式来匹配正确的条目!
我试过这个 /\[([=+-]*(\d+:[=+-])?[=+-]*)\]/
,但它也匹配 []
,虽然它是 еггог。
匹配 任何一个
[=] [---] [+=-] [=+-] [17:=] [==+-] [6:=-] [+5:=-]
[==-=+] [+=====-] [15:-++=3:+] [=======] [+=-+==-] [---==--] [==-=+==] [=--==--]
不匹配
[] [=:1] [:2+] [3-:]
我不知道正则表达式的风格是什么,但这应该适用于几乎所有的人:
\[((?:[+=-]+|[+=-]?\d+:[+=-]+)+)\]
它使用了 |
或操作数,因此它要么捕获一种匹配(-+=
符号的集合或带冒号的数字等)
另外,好像是因为你要[+5:=-]
匹配,所以我加了一个[+-]?
来匹配。
编辑:
这允许多次出现该语言。然而,这可能是微不足道的,因为没有什么可以区分代码的不同部分。
天哪,方式更简单:
\[(?:(?:\d+:)?[+=-])+\]
我不敢相信我是如此愚蠢。
我正在开发新的特定语法。其中有两种代码:
I: =
or +
or -
(一个或几个连续的加号、减号或等号);
正则表达式为 /[+=-]+/
。
II: 6:+
or 15:-
or 999:=
(任意整数,后跟一个加号、减号或等号);
正则表达式是 /\d+:[+=-]/
。
在一个条目中可能有任何数量的任何这些令牌。
每个新条目都必须用方括号括起来:[<i>代码在这里</i>]
.
括号中的代码种类可以并排排列:[=6:+-]
或[15:-++=3:+]
等
不允许输入空条目。
所以,我无法制作正则表达式来匹配正确的条目!
我试过这个 /\[([=+-]*(\d+:[=+-])?[=+-]*)\]/
,但它也匹配 []
,虽然它是 еггог。
匹配 任何一个
[=] [---] [+=-] [=+-] [17:=] [==+-] [6:=-] [+5:=-]
[==-=+] [+=====-] [15:-++=3:+] [=======] [+=-+==-] [---==--] [==-=+==] [=--==--]
不匹配
[] [=:1] [:2+] [3-:]
我不知道正则表达式的风格是什么,但这应该适用于几乎所有的人:
\[((?:[+=-]+|[+=-]?\d+:[+=-]+)+)\]
它使用了 |
或操作数,因此它要么捕获一种匹配(-+=
符号的集合或带冒号的数字等)
另外,好像是因为你要[+5:=-]
匹配,所以我加了一个[+-]?
来匹配。
编辑: 这允许多次出现该语言。然而,这可能是微不足道的,因为没有什么可以区分代码的不同部分。
天哪,方式更简单:
\[(?:(?:\d+:)?[+=-])+\]
我不敢相信我是如此愚蠢。