我的输入数字是一个int.但输入数字必须在-2055到2055的范围内,我想通过使用正则表达式来检查.
那么无论如何要写一个正则表达式来检查一个数字是否在(-2055,2055)中?
if语句用于检查数字是否在范围内更容易.但是我正在写一个解释器,所以我应该使用正则表达式来检查输入数字
注意:
观察到的行为是正确的,但起初可能令人惊讶;对我来说是这样,我认为对其他人也可能是这样——尽管对那些非常熟悉正则表达式引擎的人可能不是这样。
重复建议的重复项Regex lookahead、lookbehind 和 atomic groups包含有关环视断言的一般信息,但没有解决手头的具体误解,如下面的评论中更详细地讨论。
使用greedy,根据定义,在肯定的后视断言中的可变宽度子表达式可以表现出令人惊讶的行为。
为了方便起见,这些示例使用 PowerShell,但该行为通常适用于 .NET 正则表达式引擎:
这个命令按我直觉的预期工作:
# OK:
# The subexpression matches greedily from the start up to and
# including the last "_", and, by including the matched string ($&)
# in the replacement string, effectively inserts "|" there - and only there.
PS> 'a_b_c' -replace '^.+_', '$&|'
a_b_|c
Run Code Online (Sandbox Code Playgroud)
下面的命令,该命令使用正向后看断言,(?<=...)是看似等价-但不是: …