liunx正則的符號,危險符號「*」,下面介紹它是如何危險的
*:在正則中表示匹配0次或者1次或者多次,注意他的貪婪性
新建乙個文字檔案,內容如下
cat 與grep連用,紅色表示匹配成功,匹配原理
匹配原理:
一行:在第二個b查詢了b,所以能匹配了b,匹配一次原理
第二行:查詢到第乙個b匹配,有查詢到第二個b,也可匹配,匹配多次原理
第二行:查詢到第乙個b匹配,有查詢到第二個b,查詢到第個b,也可匹配,匹配多次原理
而grep匹配的0次,匹配不成
sed符號是乙個替換符號,用於檔案替換,現在我們像grep一樣,把b替換成z,按照我最開始的寫法,只要有b的都替換成z,所以寫法是
sed 「s/b*/z/g」 含義sed "s/查詢字元/替換字元/全域性替換",但是下面的結果另外們大吃一驚,為什麼會這樣
原始字元
替換後的字元
猜測原因:
1.在匹配時把字元拆成,前中後,3段
第一行:第乙個字元為a,匹配到了0個,前面匹配成z,保留了a,第二個字元找到了b,替換成z, 第三個字元c也是匹配到0個,新增乙個z,後面新增
第二行:同理,拆成前中後,abbc ,第乙個匹配0個,新增z,第二個字元與第三個字元滿足匹配,匹配成功,替換成z,第四個字元,不能匹配,但是匹配到了0個,後續新增乙個z
第三行:拆成前中後,abbbcd ,第乙個匹配0個,新增z,第二個字元、第三個字元、第四個字元滿足匹配,匹配成功,替換成z,第五個字元,不能匹配,匹配0個,新增z,d同理,新增乙個z
總結,*號與sed連用太危險 如果真的要替換b要使用*,使用兩個bb*,如
或者使用單個替換,不使用*
正則表達符號
元字元 描述 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾,但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如正規...
常見正則符號
s 匹配任何空白字元,包括空格 製表符 換頁符等等。s 匹配任何非空白字元 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 字元本身,請使用 匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 也匹配 n 或 r 要匹配 字元...
CSS中加號 星號及其他符號的作用
在理想世界裡,正確的css應該在任何支援css的瀏覽器裡工作良好。不幸的是,我們並不是生活在理想的世界裡,瀏覽 器們布滿了bug和不一致。建立乙個跨瀏覽器並且顯示一致的頁面,css開發者必須想盡辦法。通過使用bug和未實現的css,開發者就能夠為不同的瀏覽 器應用不同的規則。hack和filter是...