我们有一个字符串
string strScope = "This site is used for business group. [Title]Business Group[/Title][URL]http://google.com[\URL]";
在 C# 中,我们将如何从上述字符串的标题和 url 中获取业务组。
测试正则表达式的一个很好的资源是Regexr。
\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[\\URL\]
以上将与您发布的内容相匹配。我假设您打算在 URL 中使用“/”,这将匹配
\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[/URL\]
代码示例(假设您实际上想要 [\URL]
string strScope = "This site is used for business group. [Title]Business Group[/Title][URL]http://google.com[\URL]";
var match = Regex.Match( strScope, @"\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[\\URL\]");
if ( match.Groups.Count >= 2)
{
string name = match.Groups[0].Value;
string url = match.Groups[1].Value;
}
如果您想要更传统的 [/URL],显然使用其他正则表达式
使用这个正则表达式:
\[(?<tag>[^\]]+)](?<value>.*?)\[/\k<tag>]
组tag
匹配标签名称,在您的情况下:Title
, URL
.
组value
匹配此标签的值。
我假设您的输入是:
[Title]Business Group[/Title][URL]http://google.com[/URL]
结果:
var rx = new Regex(@"\[(?<tag>[^\]]+)](?<value>.*?)\[/\k<tag>]");
var txt = "This site is used for business group. [Title]Business Group[/Title [URL]http://google.com[/URL]";
var m = rx.Matches(txt);
foreach (Match match in m)
{
Console.WriteLine("{0} {1}", match.Groups["tag"].Value, match.Groups["value"].Value);
}
试试这个表达式:
@"\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[/URL\]"
第一个捕获组将是"Business Group"
;第二个将包含 URL。
var rx = new Regex(@"\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[/URL\]");
var txt = "This site is used for business group. [Title]Business Group[/Title][URL]http://google.com[/URL]";
var m = rx.Match(txt);
Console.WriteLine(m.Groups[1]);
Console.WriteLine(m.Groups[2]);
这打印
Business Group
http://google.com