我一直在阅读本网站上的正则表达式问题,但问题似乎有所不同。我需要匹配一个2位数的数字,例如23到75。在HP-UX Unix系统上执行此操作。我找到了3-44的示例,但是没有任何数字,长度没有固定值,这有点令人惊讶,但也许我不理解可变长度示例答案。

最佳答案

由于您不是要指出这是否是除其他字符之外(或在较大字符串的中间),因此在此包含了逻辑,以指示与字符串的数字部分匹配所需要的内容。这应该可以带您到那里。我们正在为仅允许这些字符的第二个数字创建范围。然后,我们将其与其他范围作为or进行比较:

(2[3456789]|[3456][0-9]|7[012345])

如前所述,您也可以执行此操作,因为子范围也被接受(取决于您正在使用的应用程序中REGEX的实现):
(2[3-9]|[3-6][0-9]|7[0-5])

根据标题,您可以将最后5个从9-75改为9:
(2[3-9]|[3-6][0-9]|7[0-9])

如果您尝试将这些数字特别地匹配为字符串(从开始到结束),则可以使用修饰符^$来指示字符串的开头和结尾。

这里有Regex系列的出色技术引用:

http://www.regular-expressions.info/numericranges.html

如果您使用的是grep之类的内容,并试图将包含该数字的行与其他内容进行匹配,那么您可能会对79范围内的内容执行以下操作:
grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder

关于regex - 正则表达式-两位数范围(23-79)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16721325/

10-16 19:51