是否可以在正则表达式中执行此操作

时间:2014-05-07 10:54:38

标签: c# regex

这是要检查的必需格式:

{low limit} - {high limit}Volts

或者

{low limit} to {high limit}Volts

例如:

50 - 150Volts
50 to 150Volts

低限必须低于上限。 在' - '之前和之后允许空间。或者'到'

如果可能在Regex中那么那将非常有帮助

4 个答案:

答案 0 :(得分:5)

可以检查字符串是否具有此格式。但是,可以检查第一个值是否低于第二个值。

这是因为这些数字只是正则表达式的一系列字符。

但是,如果您不仅限于Regex,则可以使用正则表达式解析字符串,将每个数字放在一个组中。然后将组的值解析为整数,并在C#中进行比较。

(?<min>\d+) (-|to) (?<max>\d+)Volts

如果空格是强制性的,那么这可能是你的正则表达式。

if (int.Parse(match.Groups["min"].Value) < int.Parse(match.Groups["max"].Value))
{
    // ok
}

这显示了访问组,解析和比较的原则......

答案 1 :(得分:0)

([0-9]+)[ ]?(\-|to)[ ]?([0-9]+)Volts

此正则表达式与您的示例匹配。

你无法检查是否低=&lt;正则表达式中的高位,但您可以使用第一个和第三个捕获组来获取值并进行比较。

答案 2 :(得分:0)

这个正则表达式应该是您所需要的:(\d+)(\s+(-|to)\s+)(\d+)Volts。如果空格是必填项而在文本中不是可选的,那么您可以简化它并用空格替换\s+

答案 3 :(得分:0)

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])?
    ...
});