在Regex可以做到这一点吗
本文关键字:这一点 Regex | 更新日期: 2023-09-27 18:02:13
这是需要检查的格式:
{low limit} - {high limit}Volts
或
{low limit} to {high limit}Volts
例如:
50 - 150Volts
50 to 150Volts
并且下限必须小于上限。前后允许有空格
如果可能的话,在Regex中,这将非常有帮助
可以检查字符串是否具有此格式。但检查第一个值是否低于第二个值是不可能的。
这是因为数字只是Regex的一个字符序列。
然而,如果您不局限于Regex,您可以使用Regex解析字符串,将每个数字放在一个组中。然后将组的值解析为整数,并在C#中进行比较。
(?<min>'d+) (-|to) (?<max>'d+)Volts
如果空格是强制性的,这可能是您的Regex。
if (int.Parse(match.Groups["min"].Value) < int.Parse(match.Groups["max"].Value))
{
// ok
}
这展示了访问组、解析和比较。。。
([0-9]+)[ ]?('-|to)[ ]?([0-9]+)Volts
此正则表达式与您的示例相匹配。
您无法检查low是否=<在regex中处于高位,但您可以使用第一个和第三个捕获组来获取值并进行比较。
这个正则表达式应该是您所需要的:('d+)('s+(-|to)'s+)('d+)Volts
。如果空格在文本中是强制性的而不是可选的,那么您可以简化它并用空格替换's+
。
Regex.Replace(str, @"('d+)'s*(?:-|to)'s*('d+)", delegate(Match m)
{
// ... check also
m.Groups[1].Value // 50
m.Groups[2].Value // 150
//([1] < [2])?
...
});