目录

  • Linux中的星号,点号和加号概念
    • 我的学习过程:
    • 我的思考过程:
    • 点号(.)
    • 星号(*)
    • 加号(+)
    • 问号(?)
  • linux星号,点号,加号,问号在正则表达式中的实战
    • Python代码部分
    • 我的正则表达式解读
      • c1:匹配'zxcv.'
      • c2:匹配'e1234ee'
      • c3:匹配'eee'
      • c4:匹配最后两个'ee'

Linux中的星号,点号和加号概念

我的学习过程:

昨天在学习暂存区添加项目文件时,用到命令:

git add 文件名.后缀

我要把所有的项目文件add该用什么命令呢?

我的思考过程:

第一个想到的是用命令:

1. git add *

结果没有起到作用。又考虑用:

2. git add *.*

结果显示成功了。
我后续思考是不是该看看它们的区别是什么?星号和点号是Linux中的符号。我该学习下,说干就干。

点号(.)

我理解的概念:点号表示除换行符(\n)之外其他所有字符中的任意一个字符。

星号(*)

我理解的概念:星号表示,星号前的第一个字符出现0次或无限多次。

加号(+)

我理解的概念:加号表示,加号前的第一个字符出现1次或无限多次。

问号(?)

我理解的概念:问号表示,问号前的第一个字符只要出现大于0次或1次,但结果中这个字符最多取到一个,或者取到0个。

一番学习后,我认识到用第三条命令更合适。如下:

3. git add .*

我理解的图(以*.*为例):

我的理解:
对于第二条命令(星点星):
第一个位置星号,前面是没有任何字符的,从概念解读,第一个星号能代表的是空,用小圆圈表示。
第二个位置点号,表示任意一个字符(不包括换行符),用小矩形表示。
第三个位置星号,前面有点号,表示任意一个字符,从概念解读,它能代表的是空(第一种情况),或者多个任意字符(第二种情况)。
再看表示的结果,可以看出第一个位置的星号是多余了,虽然执行结果是一样。

后续学习第4条git add . 也可以向暂存区添加所有文件。
备注:使用git ls-files -c查看暂存区所有文件。

4. git add .

思考:为什么add . 也起作用,看起来和上文的说法有冲突。
根据上文说法:点表示的是单个字符(不包括换行符),为什么可以添加所有文件呢?是git的特殊语法吗?待考证*1

linux星号,点号,加号,问号在正则表达式中的实战

Python代码部分

代码部分:

import re
a = 'zxcv.....DS_Store1234eee'
c1 = re.findall('z.*v\\.?', a)
c2 = re.findall('r(.*)e', a)
c3 = re.findall('[e]{3}', a)
c4 = re.findall('4e(e+)', a)
print(c1)
print(c2)
print(c3)
print(c4)

执行结果:

['zxcv.']
['e1234ee']
['eee']
['ee']

我的正则表达式解读

c1:匹配’zxcv.’

原始字符串: ‘zxcv…DS_Store1234eee’

c1 = re.findall('z.*v\\.?', a)

我的解读:
从c1题干看出,难点在于匹配到第一个点。
怎么匹配到第一个点呢?

我的思路是用到问号的非贪婪性。

问号是非贪婪的,问号前一位字符匹配0次或1次,最多取一个。那我就让问号前匹配到第一个点,那就有且仅有这个点了。

但是注意:点号是通配符,是一种特殊语句,需要转义字符,把点转义成普通的点,所以用到双反斜杠进行转义。

c2:匹配’e1234ee’

原始字符串: ‘zxcv…DS_Store1234eee’

c2 = re.findall('r(.*)e', a)

我的解读:
圆括弧对表示一个组的概念,从左到右,第一个圆括弧对表示第1组,依次过去第2,3,4,…组。默认整个模式串是第0组(没有圆括弧对)。

匹配只匹配到组中的内容,组外部分可做为定位标记。

开头用r标记起点,末尾用e标记结束,但不把它们包含进去。点星表示的是匹配任意长度字符串。有起点和结束点标记,就匹配出需要的字符串了。

c3:匹配’eee’

原始字符串: ‘zxcv…DS_Store1234eee’

c3 = re.findall('[e]{3}', a)

我的解读:花括号内数字表示次数。中括号内元素是或的关系。圆括弧内元素是且的关系,会形成一个组,所以如果用圆括号,匹配的只有组中的内容,一个e。所以使用中括号,我思考从左向右匹配时会先匹配到第一个e,但它不是3个e,继续向右匹配,匹配到后面三个e。

c4:匹配最后两个’ee’

原始字符串: ‘zxcv…DS_Store1234eee’

c4 = re.findall('4e(e+)', a)

我的解读:左侧使用了4e进行起点定位,在第一个组中使用e+。加号是贪婪的,加号前一位字符匹配至少一次或多次。结果可以匹配到最后两个e。

Linux中点号,星号,加号,问号实战相关推荐

  1. 正则表达式学习笔记003--问号和加号的认识与应用

    正则表达式学习笔记003--问号和加号的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记003--问号 ...

  2. linux基本功系列之more命令实战

    系列文章目录 命令1: linux基本功系列-ls命令实战 命令2: linux基本功系列之echo命令实战 命令3:linux基本功之历史记录history命令实战 命令4: linux基本功之da ...

  3. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 目录 一.全网备份 (一)部署Rsync守护进程 1)服务端(backup) 2)客户端(web01/02/03 nfs01) (二)编写脚本文件 1)客户端脚本编 ...

  4. linux基本功系列之less命令实战

    系列文章目录 命令1: linux基本功系列-ls命令实战 命令2: linux基本功系列之echo命令实战 命令3:linux基本功之历史记录history命令实战 命令4: linux基本功之da ...

  5. Linux下配置jupyter notebook远程访问实战:配置Jupyter的连接密码、启动jupyter服务、远程访问jupyter(关闭防火墙)

    Linux下配置jupyter notebook远程访问实战:配置Jupyter的连接密码.启动jupyter服务.远程访问jupyter(关闭防火墙) 目录 Linux下配置jupyter note ...

  6. python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

    python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...

  7. 问号和星号 php,星号和问号两个通配符

    通配符在之前也经常用,也一直是稍微一提,还是比较实用的一个小技巧. 本文这里主要说到的是星号"*"和问号"?". 问号是英文状态输入 如果理解的话这里说起来就会 ...

  8. Linux系统调用号表

    Linux系统调用号表 位于/usr/include/asm/unistd.h 写pwn题的时候有时需要用到系统调用,查阅相关文章.总结如下: 32位 #ifndef _ASM_X86_UNISTD_ ...

  9. 力作推荐!!!!   防线:企业Linux安全运维理念和实战(向世界500强企业学习Linux安全管理与运维之道)...

    防线:企业Linux安全运维理念和实战(向世界500强企业学习Linux安全管理与运维之道)      新书发售 http://product.dangdang.com/product.aspx?pr ...

最新文章

  1. 在子线程中弹土司的一段代码
  2. Dart_VM的相关简介与运行模式解析
  3. Jquery-基础知识点
  4. 相关的类代表的颜色和文本对齐方式
  5. java web空白xml_【图片】我做的JSP+Servlet程序,插入信息提交后出现空白页面,不知道是…【java吧】_百度贴吧...
  6. wpf学习笔记二 深入学习 xaml
  7. 作者:李香菊(1964-),女,江西农业工程职业学院副教授
  8. java split函数_Java split函数
  9. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)
  10. 计算机任务类别 搜索服务,服务删除后仍要求启动 计划任务里找不到 该怎么办...
  11. python psutil 进行系统管理 no.2
  12. bc547可以用8050代换吗_怀孕可以用婴儿护肤品吗?
  13. Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)
  14. caffe的python接口学习(7):绘制loss和accuracy曲线
  15. Android 友盟分享(截图指定的View分享)
  16. 《应用时间序列分析:R软件陪同》——2.6 MA 模型
  17. 台式计算机开关电源原理图,计算机开关电源基本结构及原理介绍
  18. python 制作标签云
  19. Java全栈工程实践
  20. 组合数怎么用计算机算方差,投资组合的方差公式是什么?怎么算的

热门文章

  1. Reactjs 踏坑指南1: 一些概念
  2. 在C#中创建DataTable
  3. 二.编写第一个c#程序(注释,命名空间,类,Main方法,标识符,关键字,输入,输出语句,)...
  4. WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展
  5. 基于Fragment的百度地图框架的使用
  6. 初次接触GWT,知识点总括
  7. For in 详解
  8. Dvbbs 7.1论坛鼠标指针修改方法
  9. 服务器kvm切换器维修,KVM切换器常见问题
  10. python setup.py install 出错_python setup.py install 失败