【问题标题】:SUBLIME & GREP: Conduct a GREP search, but exclude lines that are in all in capitalsSUBLIME & GREP:进行 GREP 搜索,但排除所有大写的行
【发布时间】:2020-01-07 13:18:59
【问题描述】:

我在 Sublime Text 3 的查找功能中使用 GREP 搜索。我想查找所有超过 12 个字符的行,不包括空格。正如Stack Overflow thread 中所讨论的,执行此操作的方法是使用以下命令:

^\h*(?:\S\h*){13,}$

但我也希望 GREP 搜索在执行上述搜索时排除所有大写的行。

例子:

FAVORITE FOODS OF AMERICA 
Mac and Cheese
Peanut Butter and Jelly Sandwich
  • 在上面的例子中,Mac and Cheese 找不到,因为 正好是 12 个字符,不包括空格。
  • FAVORITE FOODS OF AMERICA 也将找不到,因为尽管它超过 12 个字符,但它是一个全大写的行。
  • 只能找到Peanut Butter and Jelly Sandwich ,因为它超过 12 个字符,虽然它有大写字母,但该行并非全部大写。

我该怎么做?谷歌搜索我可以找到排除包含至少一个大写字母的行的 Grep 命令,但不包括仅全部大写的行。

注意:我在 Sublime 的 Find 功能中使用了 Grep 选项。

【问题讨论】:

    标签: grep sublimetext3


    【解决方案1】:

    您可以使用否定前瞻断言右侧的内容不仅是大写字符,还可能是水平空白字符。

    ^(?![A-Z\h]+$)\h*(?:\S\h*){13,}$
    

    Regex demo

    【讨论】:

    • grep 通常不支持前瞻。如果有,请尝试grep-P;但它不便携。
    • 基于我认为@big_smile 实际上在Sublime 中执行Find 的问题(即实际上并不使用grep 本身)在这种情况下,此处的正则表达式基于上面的示例输入工作。对于实际的 grep,也许 grep | grep -vgrep | grep -v 中的 pipe 来编辑掉大写匹配会比 grep -P 更便携?
    • @第四只鸟。这似乎在 Sublime 的 Find 中的 grep 选项中不起作用。它只是突出显示所有行长于 12 个字符但全部大写的文件(我希望它忽略所有大写的行)。有什么技巧可以让它在 Sublime 的 Find 中工作吗?谢谢! (我已经更新了问题以明确它是 Sublime 的功能,因为我没有意识到有区别)。
    • @big_smile 如果我使用Find,此正则表达式对我有用(即仅从您的问题中找到 PB&J 文本,而不是其他两行);你是说它也匹配FAVORITE FOODS OF AMERICA 吗?
    • @big_smile 这是一个非常冗长的版本,没有环顾四周regex101.com/r/zZtFYx/1
    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多