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はタグ名と一致します。あなたの場合:TitleURL
グループ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"ます。2 番目のものには 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 に答える