Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET正则表达式来检测和拆分字符串_C#_Regex - Fatal编程技术网

C# .NET正则表达式来检测和拆分字符串

C# .NET正则表达式来检测和拆分字符串,c#,regex,C#,Regex,我正在尝试编写一个正则表达式来将以下字符串拆分为段 #if [Customer.OrderQuantity] > 5 #then 1000 #if [Customer.OrderQuantity] < 5 #then 500 #else 100 1st Segment: #if [Customer.OrderQuantity] > 5 #then 1000 2nd Segment: #if [Customer.OrderQuantity] < 5 #then 50

我正在尝试编写一个正则表达式来将以下字符串拆分为段

#if [Customer.OrderQuantity] > 5 #then 1000 #if [Customer.OrderQuantity] < 5 #then 500 #else 100


 1st Segment: #if [Customer.OrderQuantity] > 5 #then 1000
 2nd Segment: #if [Customer.OrderQuantity] < 5 #then 500
 3rd Segment: #else 100
#如果[Customer.OrderQuantity]>5#则1000#如果[Customer.OrderQuantity]<5#则500#否则100
第一部分:#如果[客户.订单数量]>5#则为1000
第二部分:#如果[Customer.OrderQuantity]小于5#则为500
第三部分:#其他100

非常感谢你的建议

这将产生您想要的输出

string source = "#if [Customer.OrderQuantity] > 5 #then 1000 #if [Customer.OrderQuantity] < 5 #then 500 #else 100";

string[] result = Regex.Split(source, @"\s*(?=#(?:if|else))");

foreach (string a in result) {
    Console.WriteLine(a);
}
string source=“#如果[Customer.OrderQuantity]>5#则1000#如果[Customer.OrderQuantity]<5#则500#否则100”;
string[]result=Regex.Split(source,@“\s*(?=#(?:if | else)));
foreach(结果中的字符串a){
控制台写入线(a);
}

但我猜在某些情况下,我不知道这是否符合您对其他情况的要求。

这是在产生您想要的输出

string source = "#if [Customer.OrderQuantity] > 5 #then 1000 #if [Customer.OrderQuantity] < 5 #then 500 #else 100";

string[] result = Regex.Split(source, @"\s*(?=#(?:if|else))");

foreach (string a in result) {
    Console.WriteLine(a);
}
string source=“#如果[Customer.OrderQuantity]>5#则1000#如果[Customer.OrderQuantity]<5#则500#否则100”;
string[]result=Regex.Split(source,@“\s*(?=#(?:if | else)));
foreach(结果中的字符串a){
控制台写入线(a);
}

但我猜在某些方面,我不知道这是否符合你对其他情况的要求。

我完全不知道这篇文章为什么被否决。如果你能留下评论的话会更有帮助。不是我,但我想选民希望你表现出一些努力。比如,你试过什么?没必要留下评论。很明显,这篇文章没有表现出任何努力,只是在寻求解决方案(好吧,你写了建议)。这种拆分对于正则表达式是不可靠的,因为正则表达式必须知道底层语法。我想考虑一下你的意见。我试过这个:(#如果)我完全不知道这个帖子为什么被否决。如果你能留下评论的话会更有帮助。不是我,但我想选民希望你表现出一些努力。比如,你试过什么?没必要留下评论。很明显,这篇文章没有表现出任何努力,只是在寻求解决方案(好吧,你写了建议)。这种拆分对于正则表达式是不可靠的,因为正则表达式必须知道底层语法。我想考虑一下你的意见。我试过这个:(#如果)(?:(?!#如果)*)*(#然后)(?:(?!#如果|#其他)。*我会在前视之前加上空格,这样它就不会留下尾随,但是的,这就是我所想的。@stema。。。谢谢,让我试试out@stema ... 你一针见血。您使用的表达式简洁明了。比我的好得多。我在前视前加了空格,这样就不会留下尾随,但是的,这就是我的想法。@stema。。。谢谢,让我试试out@stema ... 你一针见血。您使用的表达式简洁明了。比我的好多了。