我正在尝试编写一个正则表达式,它将验证我正在开发的BB样式代码中的变量赋值。
变量分配看起来像这样
[assign {var_name} = "string value"]
您可以分配多个变量,例如
[assign {var1} = {var2} = true]
或者使用
添加到变量[assign {var_name} .= " more..."]
增量/减量变量
[assign {var}++] or [assign {var}--]
指定否定值
[assign {var1} = !{var2}]
到目前为止,我已经提出了以下正则表达式并且效果不佳
/
\[assign
(?:
[\s]*(?:
[\!]?\{[^\}]+\}(?:(?:\+\+)|(?:\-\-))?
|
[0-9]+
|
\"[^\"]+\"
|
\'[^\']+\'
|
true
|
false
)[\s]*(?:\=[\s]*|\.\=[\s]*)?
)+
\]
/
我坚持以下内容:
更新: 工作正则表达式
\[assign(?:\s)*
(
\{[^\}]+\}
(?:
\+\+
|
--
|
(?:\s)*(?:\.)?=(?:\s)*
(?:(?:!)?\{[^\}]+\}(?:\s)*(?:\.)?=(?:\s)*)*
(?:
[0-9]+
|
"[^"]+"
|
'[^']+'
|
true
|
false
|
(?:!)?\{[^\}]+\}
)
)
)
(?:\s)*\]
答案 0 :(得分:1)
如果您只需要匹配这些案例,可以使用the following regular expression来解析它们:
^(?:assign {var.*?})(\+\+|--| (?:\.)?= ({var.*?} = )*(true|".+"|!{var.*?}))$
assign {var_name} = "string value"
assign {var1} = {var2} = true
assign {var_name} .= " more..."
assign {var}++
assign {var}--
assign {var1} = !{var2}
assign {var235} = "two"
assign {var1} = {var2} = {var3} = true
assign lol = hi
assign {var3} = {var4}
assign {var5} = !"hi"