【问题标题】:Regex: Find lines that NOT contains curly brackets正则表达式:查找不包含大括号的行
【发布时间】:2018-07-10 07:03:42
【问题描述】:

美好的一天。我只想选择不包含 }});){ 但包含 ( 的行

在此示例中,我只想匹配以 php is 开头且具有简单的打开 ( 括号的行

php是(最开放的...

EmbedManager.embed({ 键: "https://fs2.formsite.com/res/showFormEmbed?EParam=m%2FOmK8apOTAL%2BJ4ksjDS9NNt7h1SghSJ6&1919401971", 宽度:“100%”,移动响应:true });

make (home) edition 32 https://s..

我做了一个正则表达式,但效果不太好,因为它还从第一行中选择了第一个括号:

^[^(\r\n]*\K\)(?!;)(?![\}])(?![\{])|\((?!(?-s).*\))

【问题讨论】:

  • 如果你想查看不包含...的行,你可以使用grep -v ...
  • 为什么你的正则表达式是这样的?模式要求是什么?
  • make (home) edition 32 https://s.. 根据您的定义也应该包含在内。它不包含您要排除的字符对。您的要求不完整或您的示例不正确。
  • 这只是一个例子。我只需要找到包含简单开放式断点( 的行,而不是包含}});){ 的行。就我而言,我要匹配的最后一行
  • 这是什么?只有包含简单左括号的行不包含}});){?您应该编辑您的问题并添加您的确切要求。从您的 cmets 中,make (home)...still 应该匹配

标签: regex windows notepad++


【解决方案1】:

您可以替换不匹配的行,并将它们替换为空。尝试查找:

^(?=.*(\}\}|\);|\)\{))(?!.*\().*$

然后什么都不替换。

这应该会留下您想看到的线条。

如果您只想突出显示/切换匹配的行,则可以改写上述正则表达式以使用否定的前瞻:

^(?!.*(\}\}|\);|\)\{))(?=.*\().*$

这将匹配您想要查看的线条。

Demo

【讨论】:

  • 不,不工作。而且我必须在200个html页面中找到,所以我不想替换任何东西,只是搜索
  • @RobRob 我的模式有一点问题,但现在已经修复了。
  • 你好,蒂姆,你的例子中的正则表达式,确实不包含 }});){ 但在我的例子中行不通。而且我需要正则表达式来找到以 php 开头的行,它有一个开放的断点(
  • 然后将php ( 添加到模式的开头。您的要求不断变化。
  • 我想我被误解了:)
【解决方案2】:

我找到答案了!埃弗里卡!!

查找:

\((?!.*[()]).*$

\((?!.*[\)]).*$

^[^(\r\n]*\K\)(?!;)(?![\}])(?![\{])|\((?!.*[\{]).*$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多