我需要能够在2个标签之间提取一个字符串,例如:"00002"来自" morenonxmldata<tag1>0002</tag1>morenonxmldata
"
我正在使用C#和.NET 3.5.
Aar*_*ron 109
Regex regex = new Regex("<tag1>(.*)</tag1>");
var v = regex.Match("morenonxmldata<tag1>0002</tag1>morenonxmldata");
string s = v.Groups[1].ToString();
Run Code Online (Sandbox Code Playgroud)
或者(如评论中所述)匹配最小子集:
Regex regex = new Regex("<tag1>(.*?)</tag1>");
Run Code Online (Sandbox Code Playgroud)
Regex
class在System.Text.RegularExpressions
命名空间中.
Meh*_*ari 68
无需正则表达式的解决方案:
string ExtractString(string s, string tag) {
// You should check for errors in real-world code, omitted for brevity
var startTag = "<" + tag + ">";
int startIndex = s.IndexOf(startTag) + startTag.Length;
int endIndex = s.IndexOf("</" + tag + ">", startIndex);
return s.Substring(startIndex, endIndex - startIndex);
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 12
一个Regex
用懒惰匹配和反向引用的方法:
foreach (Match match in Regex.Matches(
"morenonxmldata<tag1>0002</tag1>morenonxmldata<tag2>abc</tag2>asd",
@"<([^>]+)>(.*?)</\1>"))
{
Console.WriteLine("{0}={1}",
match.Groups[1].Value,
match.Groups[2].Value);
}
Run Code Online (Sandbox Code Playgroud)
Oze*_*esh 10
在两个已知值之间提取内容对于稍后也是有用的.那么为什么不为它创建一个扩展方法呢.这就是我的所作所为,简短而简单......
public static string GetBetween(this string content, string startString, string endString)
{
int Start=0, End=0;
if (content.Contains(startString) && content.Contains(endString))
{
Start = content.IndexOf(startString, 0) + startString.Length;
End = content.IndexOf(endString, Start);
return content.Substring(Start, End - Start);
}
else
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
string input = "Exemple of value between two string FirstString text I want to keep SecondString end of my string";
var match = Regex.Match(input, @"FirstString (.+?) SecondString ").Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)