我要将所有十进制数放在span标记(<span>
)中的文本中,但数字不使用句点作为小数分隔符,它们使用斜杠(/
)
示例文本是这样的:
有12/5%的学生......
我想将其转换为
有<span>
12/5 </span>
%的学生......
实际上我需要匹配的正则表达式。
答案 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