我有問題使用RegEx匹配從給定的字符串中提取值,我正在使用的字符串如下。簡單的C#正則表達式匹配問題
533 X1981毫米,35毫米厚 - 非防火門:£33.14
正則表達式我有,如果字符串如下
533 X1981毫米工作正常, 35毫米厚:£33.14
^(?<first>\d+)\s*x\s*(?<second>\d+)mm,\s*(?<third>\d+)mm Thick: £(?<price>\d+\.\d+)$
我的問題是,我怎樣才能改變重gEx忽略最後'mm'和'£'符號之間的任何內容?
我的代碼會提取毫米測量值,將它們轉換爲英寸並將字符串返回給我的方法。其餘的代碼如下。
var first = Int32.Parse(match.Groups["first"].Value);
var second = Int32.Parse(match.Groups["second"].Value);
var third = Int32.Parse(match.Groups["third"].Value);
var price = Decimal.Parse(match.Groups["price"].Value, CultureInfo.InvariantCulture);
謝謝大師!
也許我不明白你的問題,但shuldn't'^(? \ d +)\ s * X \ S *(? \ d +)毫米,\ S *(? \ d + )mm。*£(? \ d + \。\ d +)$'訣竅? –
應該盡我所能地工作 - 但。*是危險的,因爲你會得到一個貪婪的匹配。如果您只希望在匹配的mm之後看到一個數字如下:£00.00,那麼這很好。編輯實際上作爲匹配後的字符串的結束,然後是的,沒有後顧之憂,應該工作 –