c#正则表达式模式匹配

时间:2012-07-19 20:41:21

标签: c# regex

我们有一个字符串

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

在C#中我们将如何从标题&来自上述字符串的网址。

3 个答案:

答案 0 :(得分: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]

,显然可以使用其他正则表达式

答案 1 :(得分:1)

试试这个表达式:

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

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

Here is a quick demo on 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

答案 2 :(得分:1)

使用此正则表达式:

\[(?<tag>[^\]]+)](?<value>.*?)\[/\k<tag>]

小组tag根据您的情况匹配代码名称:TitleURL
value匹配此标记的值。

我假设您的输入是:

[Title]Business Group[/Title][URL]http://google.com[/URL]

结果:

Result

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);
}