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查看暫存區所有文件。
思考:為什么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中点号,星号,加号,问号实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机图形学颜色表示,计算机图形学 颜色
- 下一篇: 爬山法实现 八皇后问题 (Python