0
4

3 回答 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 回答