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

How to build a Regular Expression for while loop?

我正在尝试为 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+) *\) *

看看 updated regex

我主要在 [=<>]+ 中添加了一个量词 +,并删除了锚点 ^$ 以获得更好的可视化效果(如果您测试单个字符串,您可能会恢复它们) .

我将 [a-zA-Z0-9_] 替换为 \w(它们是相同的),将 [0-9] 替换为几乎相同的 \d。不区分大小写的 i 选项应该适用于 [a-z] 字符 class.

如果您还打算添加 != 支持,请尝试:

 *while +\( *([a-z]\w*) *((?:!=|[=<>]=?)) *([a-z]\w*|\d+) *\) *

Demo 2

这个正则表达式适合你吗?

^ *while +\( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *\) *$

我所做的只是为 1 或 2 个运算符添加检查 {1,2}。除非我误解了这应该有效。