我正在尝试使用正则表达式来匹配表达式,例如代码分配 例如:
"k=++g677"
"k=--j77"
"k=++gfrf677frfr"
我尝试过:
([a-zA-Z])([a-zA-Z]|\d)*[=][+][+]|[-][-]|[*][*]|[\/][\/]([\d]*|([a-zA-Z]([a-zA-Z]\d)*))
但似乎也可以匹配
"k++"
"k=++@ff"
你能帮忙吗?
答案 0 :(得分:2)
您可以使用
^[a-zA-Z_][\da-zA-Z_]*=([+*\/-])\1[a-zA-Z_][\da-zA-Z_]*$
或者,如果您需要将每个详细信息捕获到一个单独的组中:
^([a-zA-Z_][\da-zA-Z_]*)(=)(([+*\/-])\4)([a-zA-Z_][\da-zA-Z_]*)$
详细信息
^
-字符串的开头[a-zA-Z_]
-大写ASCII字母或下划线[a-zA-Z\d_]*
-0个或多个字母数字/ _
(如果默认情况下不识别Unicode,请替换为\w
)=
-等号([+*\/-])\1
-+
,*
,/
或-
,然后恰好1个相同的字符[a-zA-Z_]
-ASCII字母或_
[a-zA-Z\d_]*
-0个或多个字母数字/ _
(如果默认情况下不识别Unicode,请替换为\w
)$
-字符串的结尾。答案 1 :(得分:0)
您可以使用以下正则表达式:git.init
由于末尾很长,因此也将与([a-zA-Z_](?:[a-zA-Z0-9_])*)\s*=\s*(\d+|(\+\+|--|\*\*|//)?((?:[a-zA-Z_](?:[a-zA-Z0-9_])*))|(?:[a-zA-Z_](?:[a-zA-Z0-9_])*)(\+\+|--))$
相匹配。
一个问题是您忘记使用括号。随处使用它们,这样就可以确保没有意外发生。
k = x++
不匹配,[\d]*
是您要使用的。
注意:变量名可以包含[\d]+
字符。