-4

私の一致するトークン文字列は

> token >

したがって、> > の間のテキストはすべて一致します。

私の文字列は何でもかまいません。たとえば:

(random text) > (some token) > (some token) > (random text)

というわけでサンプルテキストで

impossible 1 > possible 2 > possible 3 > impossible 4

可能なすべての一致が必要です。

正規表現

\>(.*)\>

1 つのグループのみに一致

possible 2 >  possible 3

次の一致が必要な場合

possible 2 > possible 3
possible 2
possible 3
4

2 に答える 2

3

私が誤解していない限り、ここでは正規表現は必要ないようです。

string input = "(random text) > (some token) > (some token) > (random text)";
List<string> splitList = input.Split('>').ToList();

//(optional) place the original input string at the beginning 
//like a regex group match would have 
splitList.Insert(0, input);
于 2013-07-31T21:46:57.947 に答える
0

次のパターンで、許可されているすべての要素を見つけることができます。

@"(?=(>[^>]+)>)"

次に、ループで必要なすべての組み合わせを作成できます。

例:

string subject = "text > token 1 > token 2 > token 3 > token 4 > text";
string pattern = @"(?=(>[^>]+)>)";
Match m = Regex.Match(subject, pattern);
List<string> items = new List<string>();
while (m.Success)
{
    items.Add(m.Groups[1].ToString());
    m = m.NextMatch();
}
List<string> results = new List<string>();

for (int i = 0; i < items.Count(); i++)
{
    string temp = "";
    for (int j = i; j < items.Count(); j++)
    {
        temp += items[j];
        results.Add(temp + '>');
    }
}
results.ForEach(Console.WriteLine);
于 2013-07-31T21:29:05.680 に答える