正则表达式帮助简单模式

时间:2009-11-04 16:46:50

标签: c# regex

我对Regex很弱,需要帮助。输入如下所示:

<span> 10/28 &nbsp;&nbsp;Currency:&nbsp;USD

所需的输出为10/28

我需要获取<span>和“Currency:”之间的所有文本,即数字,“/”字符或“:”字符。没有空格。

你能帮忙吗?感谢。

3 个答案:

答案 0 :(得分:3)

已更新:您所描述的内容分为三个部分。

我们想要的是一个或多个字符,数字,正斜杠和:[0-9/:]*(星号表示“零个或多个实例”)。被...包围:

  • <span>(optional stuff we don't want)表示为:<span>[^0-9/:]*
  • (optional stuff we don't want)Currency是:[^0-9/:]*Currency

^表示“不是”) - 所以这基本上会匹配任何不是我们想要的位数的字符,包括&nbsp;

之类的字符

在c#中:

string pattern = @"<span>[^0-9/:]*(?<value>[0-9/:]*)[^0-9/:]*Currency";
Match match = Regex.Match(input, pattern, RegexOptions.SingleLine | RegexOptions.IgnoreCase);
string output = match.Groups["value"].Value;

答案 1 :(得分:1)

这是一个很好的起点。使用其他代码起初很好,但如果你不学习这些东西,那么每当你需要一个新的正则表达式时,你将永远注定要问问题。

Mastering Regular Expressions

Regular Expressions Cookbook

Online tutorial

花一些时间,学习基础知识,很快你就会帮助我们处理正则表达式问题。

答案 2 :(得分:1)

试试这个正则表达式:

<span>(?>.*?([\d/:]+)).*?Currency

.*?匹配最少的任何内容(非贪婪的正则表达式。)它应该适用于您的示例<span> 10/28 &nbsp;&nbsp;Currency:&nbsp;USD

这是a nice site来测试正则表达式。