[英]Simple C# regex match issue
我在使用RegEx match從給定字符串中提取值時遇到問題,我正在使用的字符串如下。
533 x 1981毫米,35毫米厚-非防火門:£33.14
我擁有的RegEx,如果字符串如下所示,則可以正常工作
533 x 1981毫米,35毫米厚:33.14英鎊
^(?<first>\d+)\s*x\s*(?<second>\d+)mm,\s*(?<third>\d+)mm Thick: £(?<price>\d+\.\d+)$
我的問題是,如何更改RegEx以忽略最后一個“ 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);
謝謝大師!
用mm.*?£
代替mm Thick: £
mm.*?£
。
.*?
表示“匹配任意字符( .
)任意次,包括零( *
),並且匹配次數盡可能少( ?
)”
使用[^£]+
獲得1個或多個不是£的字符。
^(?<first>\d+)\s*x\s*(?<second>\d+)mm,\s*(?<third>\d+)mm[^£]+£(?<price>\d+\.\d+)$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.