我的文字类似于< GetSupportUrls> b__5
结果输出应该是尖括号(<)和(>)之间的内容,即GetSupportURLs这里..
我正在尝试下面的常规Exp但没有运气
var result= Regex.Match("<GetSupportUrls>b__5", @"\<([^>]*)\)").Groups[1].Value;
请帮忙
答案 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;
}