2016-07-22 82 views
-2

我必须从字符串中检测并提取重复的字符组,并列出每个捕获的组的一部分。如何捕获正则表达式中的重复组(用于C#)

这里是字符串的示例来解析: “ZA EE 启动 Good1 结束 DS q 开始 Good2 结束 SDS DF”

我正则表达式是: “.*?(?::Start(.+)End.*?)+

预计预计拍摄组:Good1Good2,etc

我的正则表达式捕获是错误的:看起来(?::Start(.+)被视为组捕获...

我可能想念什么吗? 谢谢!

+0

我猜你只需要'开始End'(*?)。不知道你的输入是什么样子。你有真正的星号吗?还是格式化? –

+0

Hi Wiktor no astericks ...只适用于粗体字体。 – Francois

+0

所以,用'Regex.Matches'使用我的正则表达式。 –

回答

0

此正则表达式做的工作:

/(?<=Start)(.+?)(?=End)/g 
+0

感谢@baddger,我试过这个正则表达式( (?<=开始)(。+?)(?= End))*(没有**为粗体字体),我得到所有字符一个接一个像这样:“z”,“a”,“”,“e “等等......其他想法? – Francois

+0

尝试更新的答案:p – baddger964

+0

是的,我现在更近了...... :)只需要隐藏开始和结束组......您的正则表达式返回“za e eStart”,“Good1”,“Endds dqStart”,“ Good2“,”Endsds df“。但是感谢这个简单的语法,<=和=。我试图隐藏它们,但没有返回这个:“(?:<=开始)(。+?)(?:= End)” – Francois

0

为什么不使用这种模式:\*{2}Start\*{2}(.*?)\*{2}End\*{2}

对于这个输入字符串:za e e**Start**Good1**End**ds dq**Start**Good2**End**sds df,它捕捉Good1Good2

你可以用它在这里玩:https://regex101.com/r/dG0dX6/2

+0

对不起,安德鲁,你是对的... – Francois