C#正则表达式提取标签

时间:2010-03-27 19:31:47

标签: c# .net regex

说我有一些像

这样的字符串
Hi my name is <Name>
Hi <name>, shall we go for a <Drink>

是否可以通过c#Regex获取标签?像<Name>, <drink>等? 我无法做到这一点..

3 个答案:

答案 0 :(得分:2)

不确定

Regex.Matches(myString, "<([^>]+)>");

PowerShell示例:

PS> $s = @'
>> Hi my name is <Name>
>> Hi <name>, shall we go for a <Drink>
>> '@
>>
PS> [regex]::Matches($s,  '<([^>]+)>') | ft

Groups                Success Captures      Index      Length Value
------                ------- --------      -----      ------ -----
{<Name>, Name}           True {<Name>}         14           6 <Name>
{<name>, name}           True {<name>}         25           6 <name>
{<Drink>, Drink}         True {<Drink>}        51           7 <Drink>

答案 1 :(得分:1)

"</?[a-z][a-z0-9]*[^<>]*>"

要使用它,请尝试以下方法:

try
{
    Regex regexObj = new Regex("</?[a-z][a-z0-9]*[^<>]*>", RegexOptions.IgnoreCase);
    Match matchResults = regexObj.Match(subjectString);
    while (matchResults.Success)
    {
        // Do Stuff

        // matched text: matchResults.Value
        // match start: matchResults.Index
        // match length: matchResults.Length
        matchResults = matchResults.NextMatch();
    } 
}
catch (ArgumentException ex)
{
    // Syntax error in the regular expression
}

答案 2 :(得分:0)

为什么不做一些比使用C#的String.Replace更简单的事情?您传入要替换的字符串,并为其提供要替换它的任何值。

请参阅此处的示例:http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx