使用正则表达式提取字符串的内容

时间:2012-01-16 08:46:47

标签: c# regex

我的文字类似于< GetSupportUrls> b__5

结果输出应该是尖括号(<)和(>)之间的内容,即GetSupportURLs这里..

我正在尝试下面的常规Exp但没有运气

var result= Regex.Match("<GetSupportUrls>b__5", @"\<([^>]*)\)").Groups[1].Value;

请帮忙

3 个答案:

答案 0 :(得分:3)

你的正则表达式正在寻找一个结束括号,而不是一个尖括号。尝试

var result= Regex.Match("<GetSupportUrls>b__5", @"<([^>]*)>").Groups[1].Value;

(顺便说一句,你不需要转义<>个字符。)

答案 1 :(得分:2)

我会使用正则表达式:

(?<=<).*?(?=>)

这将使匹配成为<>字符之间的值。 它使用正向前瞻和后视来检查<>字符而不实际匹配它们。

代码示例:

string resultString = null;
try
{
    resultString = Regex.Match(part, "(?<=<).*?(?=>)").Value;
} catch (ArgumentException ex)
{
    // Syntax error in the regular expression
}

文档:

  // Assert that the regex below can be matched, with the match ending at this position (positive lookbehind) «(?<=<)»
//    Match the character “<” literally «<»
// Match any single character that is not a line break character «.*?»
//    Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
// Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=>)»
//    Match the character “>” literally «>» 

答案 2 :(得分:0)

您的文本似乎是XML,因此我建议使用System.Xml来处理数据。

尝试类似:

 void string GetSupportUrls()
 {
     var doc = new XmlDocument();
     doc.Load (...);  // your text
     return doc
       .SelectSingleNode("GetSupportUrls")
       .InnerText;
 }