Linux中点号,星号,加号,问号实战

目录

    • 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何调整HOOK的跳转指令

可以按这样的方式来存放 长度A 长度A 用于调整Short JMP 用于存放一些信息 |调整后的原HOOK代码 |原始代码(HOOK) |临时LONG JMP区| 信息区| 1). 调整…

广播地址的计算方法(与运算、或运算)

目录我的学习过程Python中逻辑运算符notandor位运算符取反(~)与(&)或(|)广播地址计算方法IP地址子网掩码网络地址广播地址广播地址计算举例我的学习过程 今天学习UDP的单播、多播、广播中,…

Wt::WTreeNode

2019独角兽企业重金招聘Python工程师标准>>> A single node in a tree. 〔 这个 widget 渲染的是一棵树的一个节点。〕 A tree list is constructed by combining several tree node objects in a tree hierarchy, by passing the parent tree node as the last arg…

匿名内部类探究——它是一个实例

目录我的学习过程匿名内部类概述匿名内部类探究代码验证(匿名内部类是一个实例)结论我的学习过程 昨天想学习一下Java8新特性,看到Lambda表达式可以替代匿名内部类。我对匿名内部类不太理解,决定学习一下。并进行了下面的归纳和思…

利用SQL查找表中的质数(prime number)和完全数(perfect number)以及几个有趣的SQL语句...

之前在某次interview中被老外问到如何用SQL找出列上的质数和完全数的问题;我当时已经多年没有写过这种考算法和SQL技巧(纯粹的技巧)的语句了,乍遇此问题倒是有些棘手。现在录以记之,供人参考. SQL> create table numbers(NO int) ;表已创建…

Lambda表达式及应用

目录Lambda表达式概念应用在forEach()方法使用用来替代匿名内部类代码验证(Lambda表达式替代匿名内部类)Lambda表达式 概念 语法形式: () -> {} 组成: 括号:表示参数列表;箭头:表示lambda…

UrlRewriter 伪url的配置

UrlRewriter 是微软封装好了的一个URL重写组件。使用它可以让我节约很多自已开发的时间。 好了,开始讲述我的应用经验,这只是很菜鸟的经验,高手就不用看了。 第一步,请从此下载此组件。解压,把UrlRewriter.dll copy到你…

网络地址和广播地址的快速计算方法

目录前提条件方法原理网络地址快速计算示例广播地址快速计算示例前提条件 由IP地址和子网掩码,快速计算网络地址和广播地址。 小窍门前提:当子网掩码组成只有255和0组成时。 方法原理 利用255(或者0)和其他数字的&&#xf…

职场提醒:面试失败n次以后

投了一份简历,是中国一个很有名的医药公司的职位。面试后对方回复说,我不符合他们的要求。之前也参加过很多公司面试,结果都是说我经验不足。一次次的失败也让我对自己有了新的认识,也不断的刺激我。发现一个工作经验不足的人&…

关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考

目录我的难点sychronizedList方法无法解决List遍历时线程不安全问题sychronizd同步块为什么可以解决List遍历时线程不安全问题我的思考过程我的难点 sychronizedList方法无法解决List遍历时线程不安全问题 关于慕课网的socket课程学习中,qiujuer老师在课程中讲到&…

WinCE CEDDK之DMA相关函数

CEDDK提供了DMA的相关函数,在CEDDK/DDK_DMA/ddk_dma.c中定义。实际上里面最有用的就两个函数,HalAllocateCommonBuffer(..)和HalFreeCommonBuffer(..)分别用于为DMA申请和释放 首先介绍一下会用到的DMA适配器结构,在ceddk.h中定义,如下: type…

Navicat中无法自定义标量值函数的问题

目录自定义标量函数代码自定义函数无法创建问题自定义标量函数代码 我的思路:我要创建一个自定义标量函数。使用软件:navicat12.1版本。点击Fx图标进行创建。代码中,使用num作为入参,根据num的大小返回颜色。num大于0返回白色&am…

把十六进制字符转换成十进制数

2019独角兽企业重金招聘Python工程师标准>>> /*** Get the hex value of a character (base16).* param c A character between 0 and 9 or between A and F or* between a and f.* return An int between 0 and 15, or -1 if c was not a hex digit.*/public stat…

明白90/10的原理吗?

什么是90/10原理?即在您的一生中,只有10的事情您无能为力,而90的事情都在您的把握之中。 我们无法阻止汽车老化出故障,我们无法预料飞机晚点,我们的行程可能被司机耽误在路上,等等,这些都是我们…

SQL Server更新某一列中多个字典码对应内容(sql示例)

目录示例-查询出多个字典码对应的内容示例-替换多个字典码对应的内容说明CHARINDEXFOR XML PATH示例-查询出多个字典码对应的内容 建立表格:学生-学习科目表student_study 注意:科目kemu列内容是字典码,需要更换成对应内容。 建立表格&…

DirectX支配游戏!历代GPU架构全解析

http://tech.163.com/digi/10/0430/08/65GM21CJ001618J7.html转载于:https://www.cnblogs.com/qilinzi/archive/2010/06/23/1940494.html

mybatisPlus中的field-strategy(字段更新插入策略):null值插入和更新问题

目录mybatisPlus中null值插入和更新问题实际项目解决方法示例一实际项目解决方法示例二field-strategy字段更新插入策略介绍枚举类FieldStrategy源码枚举类字段简介mybatisPlus中null值插入和更新问题 配置mybatisPlus的项目中,默认进行了不是全量更新的策略&#…

javascript变量声明语法的应用和分号讲究适用性

变量声明语法:var变量名,通常应用在语句的代码当中。在语句ECMAScript中必须与关键字var变量名之间至少有一个空格。(也就是变量名需要遵守一定的规范,至少不应该出现中文;如出现中文那就使语法中的语句代码不能相应连接到有关系地对数据处理…

SQL Server和MysQL中的联表更新sql示例

目录需求说明SQL Server中联表更新sql示例MySQL中联表更新sql示例需求说明 需求说明:把表B的报名号数据,更新到另一张表A的报名号列。通过表A证件号码和表B身份证号相等。 SQL Server中联表更新sql示例 UPDATE a SET a.bmhb.bmh FROM A aINNER J…