gpt4 book ai didi

regex - 在egrep中匹配A后跟相同数量的B

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:33 24 4
gpt4 key购买 nike

假设我想匹配一个具有完全相同数量的字符 A 和 B 的模式,这样恰好有 n 个 A 后跟恰好 n 个 B。例如,可以匹配下面的字符串。

  1. AB
  2. AABB
  3. AAABBB

另一方面,这些字符串无法匹配

  1. 学士
  2. AABB
  3. AABB
  4. ABAB

为了解决这个问题,我正在考虑重复次数,所以我的尝试看起来像这样

egrep 'A{n}B{n}'

当然,大括号内的重复次数n不能隐式定义。

虽然我知道如何编写程序来匹配它,但我正在 Mac 终端上对此进行测试,因此我试图利用 egrep 的任何可能特性来编写单句模式。

所以任何人都可以帮我解决这个问题,我们将不胜感激。

最佳答案

如果你有 gnu grep 那么你可以使用这个递归 PCRE 正则表达式:

grep -P '^(A(?1)?B)$' file

AB
AABB
AAABBB

否则,您可以通过 awk 使用这种非正则表达式方法:

awk '(n=index($0, "B")) && length(substr($0, 1, n-1)) == length(substr($0, n))' file

AB
AABB
AAABBB

awk 使用 index 函数找到第一个 B 的存在并提取 2 个子字符串,即所有 As 和如果 As 子字符串的长度与 Bs 子字符串的长度相同,则所有 Bs 并打印每条记录。

关于regex - 在egrep中匹配A后跟相同数量的B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45487956/

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