【发布时间】:2016-08-26 10:55:55
【问题描述】:
我之前问过这个问题并使用了我认为完全过于简单的构造,所以我再次尝试......
假设我有:
This is a random bit of information from 0 to 1.
This is a non-random bit of information I do NOT want to match
This is the end of this bit
This is a random bit of information from 0 to 1.
This is a non-random bit of information I do want to match
This is the end of this bit
并且(尝试)以下正则表达式:
/This is a random bit(?:(?!NOT).)*?This is the end/g
为什么不匹配?
Regexr.com 链接:http://regexr.com/3db8m
我想要完成的事情:
1) 根据一行的部分字符串判断匹配
2) 确定以一行的部分字符串结尾的匹配项
3) 不基于匹配开始/结束内的一些随机字符串进行捕获。
编辑
原始问题中建议的模式对于我对正则表达式的理解来说太复杂了。此外,(?s) 的建议是在 regexr.com 上抛出错误(错误:量词的目标无效),所以我在这里重构了问题。
如果确实有一种方法可以在提出问题后进行编辑,对于没有找到编辑链接,我深表歉意。我确实找到了这个编辑链接,因为这个问题被标记为“重复”和“以前回答过”。
恕我直言,不理解的答案就是没有答案。作为这两个问题以及我之前的问题中包含的信息的作者和寻求者,我声明 Maximilian Gerhardt 的答案更正确(至少对我而言)。
另外,不知道这是否是本次编辑的预期?当我在桌子上留下足够大的凹痕时,我通常会求助于 StackOverflow。如果我误用了这个网站,我再次道歉:)
【问题讨论】:
-
已经给出了正确的答案 - 不要更改建议的模式。
标签: c# regex regex-negation regex-lookarounds regex-greedy