我的匹配标记字符串是
> token >
所以>之间的任何文字>是一场比赛。
我的字符串可以是任何东西,例如:
(random text) > (some token) > (some token) > (random text)
所以使用示例文本
impossible 1 > possible 2 > possible 3 > impossible 4
我需要所有可能的比赛。
正则表达式
\>(.*)\>
仅匹配一个组
possible 2 > possible 3
当我需要以下比赛时
possible 2 > possible 3
possible 2
possible 3
答案 0 :(得分: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);
答案 1 :(得分: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);