C# 如何使用正则表达式获取两个字符串之间的字符串/行

C# 如何使用正则表达式获取两个字符串之间的字符串/行,c#,regex,string,C#,Regex,String,我对C#中的正则表达式类有点陌生。我有一个用例,就像我有一些文件,其中我们有以下格式的数据:-- 现在,当我使用likestring1(+?)string1作为模式时,我得到了以下2个结果:-- abc、cde和xyz。 但是我想要abc、cde、efg、hjk和xyz。 你能建议我怎么做吗 还有一个问题-如何处理“-”的可变数字,因为现在我忽略了它(在上面的示例中),但我以后必须处理它。 感谢您的帮助。结束的string1应该是一个积极的后向查找,以使其在以下迭代中匹配: string1(.+

我对C#中的正则表达式类有点陌生。我有一个用例,就像我有一些文件,其中我们有以下格式的数据:--

现在,当我使用like
string1(+?)string1
作为模式时,我得到了以下2个结果:--
abc、cde
xyz
。 但是我想要abc、cde、efg、hjk和xyz。 你能建议我怎么做吗

还有一个问题-如何处理“-”的可变数字,因为现在我忽略了它(在上面的示例中),但我以后必须处理它。
感谢您的帮助。

结束的
string1
应该是一个积极的后向查找,以使其在以下迭代中匹配:

string1(.+?)(?=string1)

对于可变数量的破折号,只需在
-*
前面加上
string1

-*string1(.+?)(?=-*string1)

您的具体输入是什么?如果您将问题格式化一点,以明确一个输入示例和预期结果,这会有所帮助。请尝试使用“向后看”和“向前看”来查找“string1”部分,以便您的匹配项在进入下一个输入示例时不会吃掉它们<代码>(?),我正在使用C语言的正则表达式类来解析字符串,而我的输入是一个字符串,其中“String 1”可以考虑为边界。现在我想在这些边界之间得到结果。只需与<代码> String 1 < /C> >(或<代码> ReEX.Seple(S,“(m)^ + + String 1\r$))<代码>)然后使用换行符拆分结果列表/数组中的每个项目。或者使用吓人的.Hi Dmitry“-”这里的字符不是正号还是负号。我不知道为什么我的问题被否决了?@user1677408:嗨!是的,我也把它解释为一个没有任何数学意义的字符。我不知道为什么你的问题被否决了。
-*string1(.+?)(?=-*string1)