5

我有一个字符串str="<u>rag</u>"。现在,我只想获取字符串"rag"。如何使用正则表达式获得它?

我的代码在这里..

我得到了输出=“”

提前致谢..

C#代码:

string input="<u>ragu</u>";
string regex = "(\\<.*\\>)";
string output = Regex.Replace(input, regex, "");
4

5 回答 5

7
const string HTML_TAG_PATTERN = "<.*?>";
Regex.Replace (str, HTML_TAG_PATTERN, string.Empty);
于 2013-04-10T12:16:04.013 回答
4

regex不推荐用于解析html

regex用于定期出现的模式。html它的格式不规则(除了xhtml)。例如html,即使您没有closing tag! 这可能会破坏您的代码,文件也是有效的。

使用像htmlagilitypack这样的 html 解析器


警告{不要在你的代码中尝试这个}

解决您的正则表达式问题!

<.*>替换<后跟 0 到多个字符(即u>rag</u)直到最后>

你应该用这个正则表达式替换它

<.*?>

.*贪婪的,即它会吃尽可能多的字符

.*?懒惰的,即它会吃尽可能少的字符

于 2013-04-10T12:19:56.407 回答
0

你当然可以:

   string input = "<u>ragu</u>";
    string regex = "(\\<[/]?[a-z]\\>)";
    string output = Regex.Replace(input, regex, "");
于 2013-04-10T12:16:59.947 回答
0

您不需要为此使用正则表达式。

string input = "<u>rag</u>".Replace("<u>", "").Replace("</u>", "");
Console.WriteLine(input);
于 2013-04-10T12:17:25.483 回答
0

你的代码几乎是正确的,一个小的修改使它工作:

 string input = "<u>ragu</u>";
 string regex = @"<.*?\>";
 string output = Regex.Replace(input, regex, string.empty);

输出是'ragu'。

编辑:这个解决方案可能不是最好的。来自用户 the-land-of-devils-srilanka 的有趣评论:不要使用正则表达式来解析 HTML。实际上,另请参阅RegEx 匹配开放标签,XHTML 自包含标签除外

于 2013-04-10T12:18:07.140 回答