代码之家  ›  专栏  ›  技术社区  ›  SysAdmin

C regex提取标签

  •  0
  • SysAdmin  · 技术社区  · 16 年前

    比如说我有几根绳子

    Hi my name is <Name>
    Hi <name>, shall we go for a <Drink>
    

    是否可以通过C regex捕获标签?喜欢 <Name>, <drink> 等? 我弄不好……

    3 回复  |  直到 16 年前
        1
  •  2
  •   Joey Gumbo    16 年前

    当然:

    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>
    
        2
  •  1
  •   Jaxidian    16 年前
    "</?[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
    }
    
        3
  •  0
  •   Bryan Denny    16 年前

    为什么不做一些更简单的事情,比如使用c s字符串。替换?您传入要替换的字符串,并给它任何要替换的值。

    请参见此处获取示例: http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx