我有以下价格格式:int _。 int ,_ int_ _TL
现在。是可选的。只有当价格大于1000时才会发生。
几个例子
54,12
540,44
5,11
3.331,55
如何使用.NET regex从给定字符串中提取这些值?谢谢。
我也在使用htmlagilitypack,如果有可能,我想使用它。
答案 0 :(得分:2)
这应该涵盖你......不是专家或任何其他东西,但它有效..
string test = @"<td width='150'><b><font color='#000000' face='Arial' size='5'> 1.777,00</font><font color='#000000' face='Arial' size='2'> TL<td width='150'><b><font color='#000000' face='Arial' size='5'> 395,00</font><font color='#000000' face='Arial' size='2'> TL";
var result = Regex.Matches(test,@"[1-9]*\.?[0-9]*,[0-9]*");
Console.Write(result);
...解释
[1-9] * =任意数字(1-9)和(*)表示多次。我将第一个数字设置为1-9,因为我假设您不会以0开始价格。
\。? =(\)是(。)的转义字符,而(?)表示它是可选的。
[0-9] * =多次重复(0-9)
, =您选择的所需分隔符。
检查出来:http://regexlib.com/CheatSheet.aspx?AspxAutoDetectCookieSupport=1
答案 1 :(得分:1)
以下是更完整的代码段:
var regex = @"^(?<Price>[0-9]{1,3}(\.[0-9]{3})*(,[0-9]+)?).*$";
var regex2 = new Regex(regex);
var matches = regex2.Matches("123.123,123 TL");
Console.WriteLine(matches[0].Groups["Price"].Captures[0].ToString());