c# - 用于在标签文本 C#之间删除逗号的正则表达式
问问题
651 次
3 回答
1
于 2012-11-28T06:18:29.920 回答
1
您可以像这样使用正则表达式来查找和修改标签的内容。
var input = "<a href=\"#\" class=\"main\">Getty Center, Restaurant at the</a>";
var regex = new Regex(@"<a[^>]*>(?<content>.*?)</a[^>]*>",
RegexOptions.Singleline);
var match = regex.Match(input);
while (match.Success) {
var group = match.Groups["content"];
input = input.Substring(0, group.Index)
+ group.Value.Replace(",", "")
+ input.Substring(group.Index + group.Length);
match = regex.Match(input, group.Index);
};
该循环用于捕获同一字符串中的多个标签。然而,正则表达式相当幼稚。它会弄乱嵌套在 A 标签内的标签,并且如果 a>
在任何属性中都会错误地解析。(尽管这可能是糟糕的 HTML。)出于这个原因,建议使用适当的 HTML 解析器。
于 2012-11-28T06:33:41.507 回答
0
如果要直接使用替换,则必须仅匹配逗号,而不匹配逗号之前或之后的文本。您必须使用向前看和向后看来检查逗号是否在标签中。虽然这是可行的,但不建议这样做。
另一种方法是使用匹配组来匹配标记中的整个文本,如果逗号存在,则对逗号进行分组并替换匹配项。
<a[^>]+>[\w\s]*(,?)[\w\s]*<\/a>
第一个捕获组捕获逗号(如果存在)。你可以在这里测试它。[http://rubular.com/r/K2jjIaObty][1]
最好的选择是使用 html 解析器来捕获a
标签的内容,搜索逗号并替换。
于 2012-11-28T06:08:41.207 回答