【发布时间】:2018-10-08 17:56:00
【问题描述】:
文字:
[A]I'm an example text [] But I want to be included [[]]
[A]I'm another text without a second part []
正则表达式:
\[A\][\s\S]*?(?:(?=\[\])|(?=\[\[\]\]))
使用上述正则表达式,无法捕获第一个文本的第二部分。
有没有办法告诉正则表达式对“或”部分贪婪?我想抓住尽可能多的群体。
编辑 1:
最初的尝试:
编辑 2:
我想要达到的目标:
在我们公司,我们使用网络服务来报告我们的工作时间。我想开发一个桌面应用程序来轻松关注工作时间。我成功下载了服务器的响应(包含所有必要的数据),但不幸的是,这个日期处于一个安静的糟糕状态,无法处理它。
因此,我需要将整个页面分成不同的日子。不幸的是,一天可能有多个时间集,例如06:05 - 10:33; 10:55 - 13:13。上面发布的正则表达式在第一次设置之后(所以在 10:33 之后)分割了天数数据集。因此,我希望正则表达式处理 Or 部分“贪婪”(如果表达式 1(较大的表达式)为真,则跳过第二个表达式。如果表达式 1 为假,则使用第二个)。
【问题讨论】:
-
按从大到小排列 or 语句。
-
@zzxyz 我已经尝试过了,但是将正则表达式重新排序为 "[A][\s\S]*?(?:(?=[[]])|(?=[] ))" 有相同的结果
-
啊,是的,问题不在于你的
or表达(stackoverflow.com/questions/35606426/…) 问题在于你的非贪婪引导。嗯......你还需要在你的or中从最喜欢到最不喜欢的匹配向左->向右。
标签: c# regex regex-greedy