如何为 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+) *\) *
我主要在 [=<>]+
中添加了一个量词 +
,并删除了锚点 ^
和 $
以获得更好的可视化效果(如果您测试单个字符串,您可能会恢复它们) .
我将 [a-zA-Z0-9_]
替换为 \w
(它们是相同的),将 [0-9]
替换为几乎相同的 \d
。不区分大小写的 i
选项应该适用于 [a-z]
字符 class.
如果您还打算添加 !=
支持,请尝试:
*while +\( *([a-z]\w*) *((?:!=|[=<>]=?)) *([a-z]\w*|\d+) *\) *
这个正则表达式适合你吗?
^ *while +\( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *\) *$
我所做的只是为 1 或 2 个运算符添加检查 {1,2}
。除非我误解了这应该有效。
我正在尝试为 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+) *\) *
我主要在 [=<>]+
中添加了一个量词 +
,并删除了锚点 ^
和 $
以获得更好的可视化效果(如果您测试单个字符串,您可能会恢复它们) .
我将 [a-zA-Z0-9_]
替换为 \w
(它们是相同的),将 [0-9]
替换为几乎相同的 \d
。不区分大小写的 i
选项应该适用于 [a-z]
字符 class.
如果您还打算添加 !=
支持,请尝试:
*while +\( *([a-z]\w*) *((?:!=|[=<>]=?)) *([a-z]\w*|\d+) *\) *
这个正则表达式适合你吗?
^ *while +\( *([a-zA-Z][a-zA-Z0-9_]*) *([=<>]{1,2}) *([a-zA-Z][a-zA-Z0-9_]*|[0-9]+) *\) *$
我所做的只是为 1 或 2 个运算符添加检查 {1,2}
。除非我误解了这应该有效。