【问题标题】:Regex character repeats n or more times in line with grep正则表达式字符按照 grep 重复 n 次或更多次
【发布时间】:2017-12-21 08:27:51
【问题描述】:

我需要找到正则表达式来找到一个用 grep 重复 4 次或更多次的字符。

我知道表达式是{n,},所以如果我需要查找行,例如当字符“g”重复4次或更多次时,理论上用grep手册页是:

grep "g{4,}" textsamplefile

但不起作用。有什么帮助吗?

字符可以有其他字母。例如,一个有效的匹配是:

g示例gg有效g匹配g

g其他g有效g匹配gg这里g

gggg其他

【问题讨论】:

  • 使用grep "g\{4,\}" textsamplefilegrep -E "g{4,}" textsamplefile
  • 你好维克托。这是行不通的
  • 使用 SunOS?然后使用grep "ggggg*" textsamplefile。限制量词在那里不起作用。或者安装 GNU grep 版本。
  • 能否请您给我们您的操作系统名称/版本uname -a 和您的grep 版本grep -V
  • @Goncatin 如果grep "ggggg*" textsamplefile 不起作用,则问题不在于grep

标签: regex grep repeat


【解决方案1】:

你应该改变你的grep命令:

grep -E 'g{4,}' input_file # --> this will extract only the lines containing chains of 4 or more g

如果您想获取包含 4 个或更多相同字符链的所有行,则您的正则表达式变为:

grep -E '(.)\1{3,}' input_file

如果您不需要链而只需要g 出现4 次或更多次的行:

grep -E '([^g]*g){4}' input_file

您可以概括到任何重复 4 次或更多的字符,方法是:

grep -E '(.)(.*\1){3}' input_file

【讨论】:

  • 我不是在寻找链,而是在字符重复时的行。例如,有效匹配必须是 exgentgougligshg
  • 你能试试最后一个正则表达式,让我知道它是否有效吗?
  • @Goncatin 使用'([^g]*g){4}' ERE 模式。
  • @Wiktor:感谢您的提示,我已经编辑了答案!但是,是否可以将它推广到任何字符,而不仅仅是g?我试图找到一个通用的正则表达式,但我找不到......
  • 已编辑,以便它可以在任何地方使用在行中出现 4 次或更多的任何字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多