找到小数和主要部分用斜线而不是句点分隔的十进制数

时间:2011-05-01 08:47:03

标签: c# .net regex

我要将所有十进制数放在span标记(<span>)中的文本中,但数字不使用句点作为小数分隔符,它们使用斜杠(/

示例文本是这样的:

有12/5%的学生......

我想将其转换为

<span> 12/5 </span>%的学生......

实际上我需要匹配的正则表达式。

3 个答案:

答案 0 :(得分:2)

试试这个:

resultString = Regex.Replace(subjectString, @"(?<!/)\d+(?:/\d+)?(?!/)", "<span>$0</span>");

它将使用整数和小数。不允许使用1//1等数字,也不允许使用1/2/3之类的数字。

<强>解释

(?<!/)    # Assert that the previous character isn't a /
\d+       # Match one or more digits
(?:       # Try to match...
 /\d+     # a /, followed by one or more digits
)?        # ...optionally.
(?!/)     # Assert that the following character isn't a /

答案 1 :(得分:1)

以下正则表达式适用于您,并计算该数字将包含/

[\d]+/[\d]+

以下代码可以解决问题:

string text = "12/5";
string pattern = @"\b[\d]+/[\d]+\b";
MatchEvaluator m = match => "<span>" + match.Groups[0] + "</match>";
Regex.Replace(text, pattern, m);

答案 2 :(得分:0)

正则表达式:

\D+((\d+)\/(\d+))\D+

捕获组:

\1 12/5
\2 12
\3 5