我正在尝试为while
循环构建一个常规表达式以包含在我的程序中。这是我到目前为止想出的:
https://regex101.com/r/aL0zC7/11
/^ *while +( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *) *$/
但问题是我希望条件包括
==, <, >, <=,>=
为了测试(a==5)
或(a<=5)
或(a>=5)
,而不仅仅是=,<,>
.我尝试将以下模式添加到我的表达式中:([=<>])
.
我怎样才能做到这一点?
此正则表达式将匹配所有情况:
*while +( *([a-z]w*) *([=<>]=?) *([a-z]w*|d+) *) *
看看更新的正则表达式
我主要在[=<>]+
中添加了一个量词+
,并删除了^
和$
的锚点以获得更好的可视化(如果您测试单个字符串,您可以还原它们)。
我用w
替换了[a-zA-Z0-9_]
(它们是相同的),[0-9]
几乎相同的d
。不区分大小写i
选项应该可以很好地与[a-z]
字符类配合使用。
如果您还计划添加!=
支持,请尝试:
*while +( *([a-z]w*) *((?:!=|[=<>]=?)) *([a-z]w*|d+) *) *
演示 2
这个正则表达式对你有用吗?
^ *while +( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *) *$
我所做的只是为 1 或 2 个运算符添加支票 {1,2}
.除非我误解这应该有效。