gpt4 book ai didi

regex - 是否可以使用正则表达式来匹配条件?

转载 作者:行者123 更新时间:2023-12-01 08:00:05 24 4
gpt4 key购买 nike

我在 super user 上发布了这个问题有人建议我在 stackoverflow 上发布这个问题。

我真的很喜欢 vim,今天我遇到了一个有趣的问题,我认为它可以通过 regexp 完成,但我无法形成正确的。

我有一个非常大的 sql 文件。它整合了许多不同的查询。文件内容如下:

select * from hr.employees, oe.orders, oe.order_items
select * from hr.employess, oe.orders, hr.job_history
select * from oe.customers, oe.orders, hr.employees
select * from hr.employees, hr.departments, hr.locations

如何仅选择与 hr. 只有一个匹配项的行在线上?。例如上面它将是第一行和第三行。

最佳答案

当然,可以匹配这样的行。此模式匹配:

^\%(\%(hr\.\)\@!.\)*hr\.\%(\%(hr\.\)\@!.\)*$

有些人喜欢通过使用非常神奇的开关 \v 来减少反斜杠转义的数量。 .然后相同的模式变成
\v^%(%(hr\.)@!.)*hr\.%(%(hr\.)@!.)*$

(这里我使用了非捕获括号 \%(...\),但捕获括号 \(...\) 也能正常工作。)

问题是:你想用这些线做什么?删除它们?

在这种情况下,您可以使用 :global命令:
:g/\v^%(%(hr\.)@!.)*hr\.%(%(hr\.)@!.)*$/d

更多信息请访问
  • :h :global
  • :h /\v
  • :h /\%(
  • :h /\@!
  • 关于regex - 是否可以使用正则表达式来匹配条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495422/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com