我想使用正则表达式获取在两个特定单词之间有分隔符的字符串。
例如,我需要一个匹配的正则表达式:
Statements1 start Statements2;Statements3 end fun;
在“start”和“end”之间可以多次出现“;
”。
语句是多个单词,其中(.*)可以在正则表达式中用于一个单词。
但是如果'start‘和'end’之间没有‘;
’,正则表达式就不应该匹配。
另外,'end‘应该是'start’之后遇到的第一个'end‘
因此,正则表达式不应该匹配
Statements1 start Statements2 end Statements3;end fun
我想要的火柴是
'start'
之后
因此,在这种情况下,它将是一个组(对于第一个字符串,因为第二个字符串不应该匹配),如下所示:
发布于 2009-03-13 13:34:36
因此,下面的正则表达式将匹配您的正例,而不是负例,并将结果放入组1、2和3中。
(.*?) (start) ((?:(?:.*?) ;)+ (?:.*?) end fun)
如果您不熟悉(?:)语法-它们表示非捕获括号。查看Mastering Regular Expressions,它是这个主题的很好的参考资料!
发布于 2009-03-13 13:10:07
start ((Statements) ;)+ (Statements) end fun
发布于 2009-03-13 13:16:47
使用起来可能会更快
string[] Strings = stringToSplit.Split(new char[] { ';' });
if (Strings.Count() > 1)
{
// Do your stuff
}
https://stackoverflow.com/questions/642604
复制相似问题