花括号允许为可重复的正则表达式指定一个上限。这通常称为间隔(interval)。
可以用两种格式来指定区间。

  • m:正则表达式准确出现m次。
  • m, n:正则表达式至少出现m次,至多n次。

这个特性可以精确调整字符或字符集在模式中具体出现的次数:

$ echo "bt" | gawk --re-interval '/be{1}t/{print $0}'
$
$ echo "bet" | gawk --re-interval '/be{1}t/{print $0}'
bet
$ echo "beet" | gawk --re-interval '/be{1}t/{print $0}'
$

通过指定间隔为1,限定了该字符在匹配模式的字符串中出现的次数。如果该字符出现多次,模式匹配就不成立。
很多时候,同时指定下限和上限也很方便。

$ echo "bt" | gawk --re-interval '/be{1,2}t/{print $0}'
$
$ echo "bet" | gawk --re-interval '/be{1,2}t/{print $0}'
bet
$ echo "beet" | gawk --re-interval '/be{1,2}t/{print $0}'
beet
$ echo "beeet" | gawk --re-interval '/be{1,2}t/{print $0}'
$

在这个例子中,字符e可以出现1次或2次,这样模式就能匹配;否则,模式无法匹配。
间隔模式匹配同样适用于字符组。

$ echo "bt" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
$
$ echo "bat" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
bat
$ echo "bet" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
bet
$ echo "beat" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
beat
$ echo "beet" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
beet
$ echo "beeat" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
$
$ echo "baeet" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
$
$ echo "baeaet" | gawk --re-interval '/b[ae]{1,2}t/{print $0}'
$

如果字母a或e在文本模式中只出现了1~2次,则正则表达式模式匹配;否则,模式匹配失败。

扩展正则表达式之花括号相关推荐

  1. 正则表达式(匹配第一个花括号)

    学习正则,工作中使用正则让我对"^"有了新的认知: 正则中^匹配输入字符串的开始位置,除非在[]方括号表达式中使用,此时表示不接受该字符集合. 废话不多说,直接看栗子吧, 如下图所 ...

  2. shell脚本中的花括号扩展

    shell脚本中的花括号扩展 在shell脚本中可以在花括号中使用一组以逗号分隔的字符串或者字符串序列来进行字符串扩展,最终输出的结果为以空格分隔的字符串(整数也可) [root@mao_aliyun ...

  3. python正则表达式花括号_python正则表达式(+ {})(二)

    加号-重复匹配多次 + 表示匹配前面的子表达式一次或多次,不包括0次 比如,还是上面的例子,你要从文本中,选择每行逗号后面的字符串内容,包括逗号本身 但是,添加一个条件,如果逗号后面没有内容,就不要选 ...

  4. shell中的括号(小括号,中括号,大括号/花括号)

    一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  5. Linux扩展正则表达式

    1. 扩展正则表达式 1.1 +(加号) + 表示前一个字符出现1次或1次以上 1.1.1 理解+ 要求:取出文件内容连续出现的小写字母 [root@oldboyedu50-lnb /oldboy]# ...

  6. 扩展正则表达式及应用

    第1章 扩展正则表达式 1.1  + 前一个字符连续出现了1次或1次以上 egrep  "0+" oldboy.txt  1次或1次以上 >=1 egrep  "0 ...

  7. 什么时候需要在外壳变量周围花括号?

    在Shell脚本中,何时在扩展变量时使用{} ? 例如,我看到了以下内容: var=10 # Declare variableecho "${var}" # One use of ...

  8. shell脚本中的几个括号总结(小括号/大括号/花括号)

    [转载]shell脚本中的几个括号总结(小括号/大括号/花括号) (2011-10-08 21:23:34) 转载▼ 标签: 杂谈 分类: linux shell脚本中的几个括号总结(小括号/大括号/ ...

  9. 正则表达式与扩展正则表达式区别

    最近在学习正则表达式时,遇到了一些问题,究其原因是正则表达式与扩展正则表达式的区别没有弄清楚 正则表达式与扩展正则表达式类似,只是扩展正则表达式表达更加简单正则表达式需要打 \ 转义字符 来表示某些字 ...

最新文章

  1. JAX_WS 2.2 规范的webservices客户端实现(Axis2,Cxf)
  2. sw如何缩放装配体_SolidWorks关于大型装配体的优化技巧(二)
  3. 智能车竞赛技术报告 | 智能车视觉 - 中南林业科技大学 - 弃车人队
  4. Java数据结构和算法( 二 ) ## 数组
  5. 5种较为简单的缺失值处理方法
  6. 解決“无法解决 equal to 操作的排序规则冲突 ”问题
  7. JS收集:限制输入搜索串
  8. 鸿蒙轻内核的得力助手:带你掌握4种内存调试方法
  9. html5选择试题及答案,全套html5面试题大全带答案
  10. 【软件测试从入门到放弃】熟悉阶段:软件测试流程
  11. 在xp系统如何把文件上传到ftp服务器,xp系统怎么上传到ftp服务器
  12. 深入浅出通信原理知识点1
  13. botley编程机器人测评_好物测评:五岁小孩都能上手的智能编程机器人有多好玩?动手又动脑!...
  14. 多元函数的泰勒展开Talor以及黑塞矩阵
  15. python手写数字识别实验报告_ANN MNIST手写数字识别总结
  16. Android Unable to find source java class:<File>because it does not belong to any of the source dirs:
  17. Fiddler证书 在 ios 上信任后仍提示不受信任的解决方法
  18. Bootstrap 弹出框modal 垂直居中(适用各种分辨率窗口)
  19. python中将字符变为大写_python如何把小写字母变成大写字母
  20. php 测试网站打开速度,利用JS测试目标网站的打开响应速度_javascript技巧

热门文章

  1. Shell编程:(七)函数
  2. 购票系统设计之余票处理
  3. php 前端缓存,前端浏览器缓存及代码部署
  4. 003-驾照考试,总结
  5. WebStrom、IDEA、PhpStrom等编辑器输入的中文显示不全且是繁体的解决办法
  6. 对301、302的理解
  7. C语言用三周目怎么编猜拳游戏
  8. ubuntu如何安装chromium浏览器并设置成中文版
  9. 牛客2021年多校训练营<2>
  10. JavaScript基础-BOMDOM