1

我们有一个字符串

string strScope = "This site is used for business group. [Title]Business Group[/Title][URL]http://google.com[\URL]";

在 C# 中,我们将如何从上述字符串的标题和 url 中获取业务组。

4

3 回答 3

2

测试正则表达式的一个很好的资源是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],显然使用其他正则表达式

于 2012-07-19T20:49:28.687 回答
1

使用这个正则表达式:

\[(?<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);
}
于 2012-07-19T20:57:08.340 回答
1

试试这个表达式:

@"\[Title\]([^\[]+)\[/Title\]\[URL\]([^\[]+)\[/URL\]"

第一个捕获组将是"Business Group";第二个将包含 URL。

这是关于 ideone 的快速演示

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
于 2012-07-19T20:46:51.063 回答