这个问题在这里已有答案:
我目前正在考虑如何使用c#将这种字符串拆分为正则表达式。
[01,01,01][02,03,00][03,07,00][04,06,00][05,02,00][06,04,00][07,08,00][08,05,00]
知识产权的人是否可以指出我如何实现这一目标?
样本正则表达式模式不起作用:
[\dd,\dd,\dd]
样本输出:
[01,01,01]
[02,03,00]
[03,07,00]
[04,06,00]
[05,02,00]
[06,04,00]
[07,08,00]
[08,05,00]
这将在C#(\[.+?\])
中完成,例如:
var s = @"[01,01,01][02,03,00][03,07,00][04,06,00][05,02,00][06,04,00][07,08,00][08,05,00]";
var reg = new Regex(@"(\[.+?\])");
var matches = reg.Matches(s);
foreach(Match m in matches)
{
Console.WriteLine($"{m.Value}");
}
编辑这就是(\[.+?\])
的表达方式
(
,意味着捕捉内部模式匹配的任何内容)
和\[
,就是要匹配源字符串中的\]
和[
]
意味着匹配一个或多个字符,但尽可能少,以便它不会匹配第一个.+?
和最后一个[
之前的所有字符我知道你规定了]
然而如果仅仅为了学术目的,它再次值得看看斯普利特
码
Regex
产量
var input = "[01,01,01][02,03,00][03,07,00][04,06,00][05,02,00][06,04,00][07,08,00][08,05,00]"; var output = input.Split(']',StringSplitOptions.RemoveEmptyEntries) .Select(x => x + "]") // the bracket back .ToList(); foreach(var o in output) Console.WriteLine(o);
下面的Regex解决方案仅限于由逗号分隔的2个数字的3个值。在foreach循环中,您可以通过[01,01,01]
[02,03,00]
[03,07,00]
[04,06,00]
[05,02,00]
[06,04,00]
[07,08,00]
[08,05,00]
访问匹配值。 match.Value
请记住包括>> Refiddle example
using System.Text.RegularExpressions;
谢谢大家的答案,我也使用这个代码
var input = "[01,01,01][02,03,00][03,07,00][04,06,00][05,02,00][06,04,00][07,08,00][08,05,00]";
foreach(var match in Regex.Matches(input, @"(\[\d{2},\d{2},\d{2}\])+"))
{
// do stuff
}