如何为 while 循环构建正则表达式



我正在尝试为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}.除非我误解这应该有效。

最新更新