单一拆分或匹配正则表达式

时间:2010-06-20 17:39:46

标签: c# regex

9.jul。 3 dni od 205,00 EUR

单个正则表达式(匹配opr拆分)是否可以从字符串中获取205,00数字?它必须是单个正则表达式,而不是2或3个正则表达式,结果为205,00。

字符串看起来像:

 <option value="9.7.2010|3">9.jul. 3 dni od 205,00&nbsp;EUR <option value="23.7.2010|3">23.jul. 3 dni od 205,00&nbsp;EUR <option value="27.8.2010|3">27.avg. 3 dni od 205,00&nbsp;EUR <option value="10.9.2010|3">10.sep. 3 dni od 205,00&nbsp;EUR <option value="24.9.2010|3">24.sep. 3 dni od 205,00&nbsp;EUR <option value="29.10.2010|3">29.okt. 3 dni od 205,00&nbsp;EUR <option value="25.3.2011|3">25.mar. 3 dni od 205,00&nbsp;EUR <option value="15.4.2011|3">15.apr. 3 dni od 205,00&nbsp;EUR </select>

4 个答案:

答案 0 :(得分:1)

也许

(\d+,\d\d) EUR$

您并没有真正指定主题的外观。

答案 1 :(得分:1)

这里有两个可能的问题

空间

是空格(ASCII 32)还是&nbsp;?或许它只是任何\s个字符?


匹配部分

我将假设它只是一个常规空间。如果不是这种情况,则用以下模式替换它。

要仅匹配数字部分,您可以使用\d+,\d\d(?= EUR)。这使用预测(?=___),因此您只匹配您感兴趣的部分。

另一个选项是匹配(\d+,\d\d) EUR,然后提取Groups[1]

相关问题

参考

答案 2 :(得分:1)

(\d+,\d\d) EUR的尝试(希望您实际上并未输入&nbsp;)应该有效,但您必须从结果中访问第1组才能获得括号中的内容。例如:

Regex regex = new Regex(@"(\d+,\d\d) EUR");
Match match = regex.Match("9.jul. 3 dni od 205,00 EUR");
string cashString = match.Groups[1].Value;

答案 3 :(得分:1)

&nbsp;很可能会转换为ASCII 160(html解码),这与空格不同。使用\ s +将匹配没有中断空格以及普通空格,制表符和换行符/回车符。

如果没有解码,那么您应该可以使用&nbsp;代替\ s +。

(\d+,\d+)\s+EUR