我在使用RegEx匹配从给定字符串中提取值时遇到问题,我正在使用的字符串在下面。
533 x 1981mm,35mm厚 - 非防火门:£33.14
我有的RegEx,如果字符串如下,则可以正常工作
533 x 1981mm,35mm厚: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);
谢谢大师!
答案 0 :(得分:3)
将mm Thick: £
替换为mm.*?£
。
.*?
表示“任意次数匹配任何字符(.
),包括零(*
),尽可能少(?
)”< / p>
答案 1 :(得分:1)
使用[^£]+
获取1个或多个不是£的字符。
^(?<first>\d+)\s*x\s*(?<second>\d+)mm,\s*(?<third>\d+)mm[^£]+£(?<price>\d+\.\d+)$