【问题标题】:.NET Regex Negative Lookahead - What am I doing wrong (round 2!) [duplicate].NET Regex Negative Lookahead - 我做错了什么(第 2 轮!)[重复]
【发布时间】: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


【解决方案1】:

不要将. 与包含换行符的文本一起使用.. 工作示例:

http://regexr.com/3db92

【讨论】:

  • 做到了 - 现在,教一个人钓鱼,yadda yadda - 为什么我不想在换行符中使用点?另外,假设我只想要那个没有的——我怎么能把它翻过来?
  • 因为i.stack.imgur.com/rPxQp.png。简而言之,. 匹配所有 but 换行符,并且在您想要匹配的文本中有多个换行符。正则表达式将停止完全匹配。
  • 我没有意识到点匹配所有但换行符,谢谢。如果我想翻转这个来只得到 WITH NOT 的匹配项,我该怎么做?
  • 改写成i.stack.imgur.com/kZOgL.png怎么样?内部必须有“NOT”的任意文本,以及您的静态开始和结束字符串。
  • 没错。一开始我想使用积极的前瞻(?=NOT),但我很困惑为什么这对我自己不起作用。也许你可以在没有两个 [\s\S]*? 匹配的情况下让它工作。 (This is a random bit[\s\S]*(?=NOT)[\s\S]*?This is the end 但基本上和以前一样。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2011-12-04
  • 2019-12-21
相关资源
最近更新 更多