日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2025/3/11 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Linux中点号,星号,加号,问号实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。