我必须从字符串中检测并提取重复的字符组,并列出每个捕获的组的一部分。如何捕获正则表达式中的重复组(用于C#)
这里是字符串的示例来解析: “ZA EE 启动 Good1 结束 DS q 开始 Good2 结束 SDS DF”
我正则表达式是: “.*?(?::Start(.+)End.*?)+
”
预计预计拍摄组:Good1
,Good2
,etc
我的正则表达式捕获是错误的:看起来(?::Start(.+)
被视为组捕获...
我可能想念什么吗? 谢谢!
我必须从字符串中检测并提取重复的字符组,并列出每个捕获的组的一部分。如何捕获正则表达式中的重复组(用于C#)
这里是字符串的示例来解析: “ZA EE 启动 Good1 结束 DS q 开始 Good2 结束 SDS DF”
我正则表达式是: “.*?(?::Start(.+)End.*?)+
”
预计预计拍摄组:Good1
,Good2
,etc
我的正则表达式捕获是错误的:看起来(?::Start(.+)
被视为组捕获...
我可能想念什么吗? 谢谢!
此正则表达式做的工作:
/(?<=Start)(.+?)(?=End)/g
感谢@baddger,我试过这个正则表达式( (?<=开始)(。+?)(?= End))*(没有**为粗体字体),我得到所有字符一个接一个像这样:“z”,“a”,“”,“e “等等......其他想法? – Francois
尝试更新的答案:p – baddger964
是的,我现在更近了...... :)只需要隐藏开始和结束组......您的正则表达式返回“za e eStart”,“Good1”,“Endds dqStart”,“ Good2“,”Endsds df“。但是感谢这个简单的语法,<=和=。我试图隐藏它们,但没有返回这个:“(?:<=开始)(。+?)(?:= End)” – Francois
为什么不使用这种模式:\*{2}Start\*{2}(.*?)\*{2}End\*{2}
对于这个输入字符串:za e e**Start**Good1**End**ds dq**Start**Good2**End**sds df
,它捕捉Good1
和Good2
。
你可以用它在这里玩:https://regex101.com/r/dG0dX6/2
对不起,安德鲁,你是对的... – Francois
我猜你只需要'开始End'(*?)。不知道你的输入是什么样子。你有真正的星号吗?还是格式化? –
Hi Wiktor no astericks ...只适用于粗体字体。 – Francois
所以,用'Regex.Matches'使用我的正则表达式。 –