這是要檢查的格式要求:是否有可能做到這一點的正則表達式
{low limit} - {high limit}Volts
或者
{low limit} to {high limit}Volts
例:
50 - 150Volts
50 to 150Volts
和低限制必須小於上限。 「 - 」 空間之前和之後允許或「到」
如果可能的正則表達式,那麼這將是很有益的
這是要檢查的格式要求:是否有可能做到這一點的正則表達式
{low limit} - {high limit}Volts
或者
{low limit} to {high limit}Volts
例:
50 - 150Volts
50 to 150Volts
和低限制必須小於上限。 「 - 」 空間之前和之後允許或「到」
如果可能的正則表達式,那麼這將是很有益的
它可以檢查如果字符串格式。但它是而不是可能檢查第一個值是否低於第二個值。
這是因爲數字只是正則表達式的一個字符序列。
但是,如果您不僅限於正則表達式,還可以使用正則表達式解析字符串,將每個數字放在一個組中。然後將這些組的值解析爲整數並在C#中進行比較。
(?<min>\d+) (-|to) (?<max>\d+)Volts
這可能是您的正則表達式,如果空格是強制性的。
if (int.Parse(match.Groups["min"].Value) < int.Parse(match.Groups["max"].Value))
{
// ok
}
這說明訪問組,分析和比較的原則......
([0-9]+)[ ]?(\-|to)[ ]?([0-9]+)Volts
此正則表達式的例子相匹配。
您不能檢查正則表達式中的low = <高,但您可以使用第一個和第三個捕獲組來獲取值並進行比較。
這個正則表達式應該是你需要的:(\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])?
...
});
這正是我所需要的。 Hinek的建議也是正確的。 – user3514797