这是我先前的问题的继续。 舱面发动机的回报没有匹配,但我预计有8。
我的问候是完美地处理所有问题,我的俘虏团体工作出色,但我发现了一个我不知道如何处理的edge案件。
INSERT INTO [Example] ( [CaseNumber] , [TestText] )
VALUES
(1 , Single Line Case ),
(2 , Multi
Line Case );
(3 , Two Lines with odd end );
Case );
(4 , ),
(5 , Case 3 is the Empty Text Case );
我的格局 我正在使用以下密码:Singleline
,Multiline
,ExplicitCapture
和IgnorePattern Whitespace
。
^(
((( (?<s>.*?) (?! )) |
(?<n>-?[d.]+)
)(s,s)?
)+
#(?<! ) #Commented Case 3 works, un-commented case 2 works
)[;,]
?$
我既可以处理案件3,也可以处理案件4,但我对这两种情况都感到不安。
如果我能够检查一下是否在捕获组中的<条码>中添加了多少条码>。 然后,我可以检查一下,看看我们是否处于实际的线端,或者在案文栏中,有一条线,目的只是要赶上模式。 但是,我无法说明如何修改
我是否想用一个单一的格列克来做些什么,或者我是否被迫做员额处理(使用所评论的案件),这是否是两张通行证? 在这里,该法典将载于LINQPad。
string text =
@"INSERT INTO [Example] ( [CaseNumber] , [TestText] )
VALUES
(1 , Single Line Case ),
(2 , Multi
Line Case );
(3 , Two Lines with odd end );
Case );
(4 , ),
(5 , Case 3 is the Empty Text Case );
";
const string recordRegex =
@"^(
((( (?<s>.*?) (?! )) |
(?<n>-?[d.]+)
)(s,s)?
)+
#(?<! ) #Commented Case 3 works, un-commented case 2 works
)[;,]
?$";
var records = Regex.Matches(text, recordRegex, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture);
records.Dump();