grep中使用"\d"匹配數字不成功的原因解決_正則表達式

來源:腳本之家  責任編輯:小易  

正則中\\表示轉義,比如\\s代表一個空字符(空格、制表符等),\\d代表一個數字【grep默認正則不支持\\s,\\d,\\w等用法】。正則中.*?()[]{ } 有特殊的意義,如果匹配該字符本身,應該加轉義 比如匹配一個星號*應該在正則中用 \\*一般的正則表達式中,“字符{數字A}”或“字符{數字1,數字2}”表示量詞,修飾前面的字符,表示“數字A個字符”或“最少數字1個,最多數字2個字符”但是grep、sed、vi中的默認正則表達式有所不同,這些正則中的(,{,+等如果不加轉義,不表示特殊意義,加上轉義才和其他語言中的正則,比如Perl、Net、PHP…,意義相同,不加轉義代表本身。grep其他版本也可以使用更高級的正則,比如egrep(或使用-e選項),-P選項可以使用Perl的正則寫法,對(,{,+前面不用加\\就可以表示特殊含義,并且支持\\w表示字符,環視等高級功能。這里[a-z]\\{7\\}具體的意思就是 匹配7個連續的小寫英文字母(不要求必須相同的字符)www.anxorj.tw防采集請勿采集本網。

首先正則表達式分為三類(man grep可以看到,分別是basic RegExs,extended RegExs,perl RegExs)

正則表達式使用 Python 的 raw 字符串表示;在字符串前加個 "r" 反斜杠就不會被任何特殊方式處理,所以 r"\n" 就是包含"\" 和 "n" 的兩個字符,而 "\n" 則是一個字符,表示一個換行。正則表達式通常在 Python 代碼中都是用這種 raw 字符串表示。

正則表達式:在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索或替換那些符合某個模式的文本內容。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。

grep '^[0-9]\{1,3\}$' test.txt | grep '^[1-9]' 如果是變量 echo $var | grep '^[0-9]\{1,3\}$' | grep '^[1-9]' $表示行尾 這個正則不匹配 12a 這樣的字符串 你的變量內容是什么樣的? 我用來測試的 test.txt 的內容: 123 321 123212 001 01

一、正則表達式分類:

GREP全稱是:Globally search a Regular Expression and Print。 這是一種非常強大的文本搜索工具,它能使用特定模式匹配搜索文本(包括正則表達式),并且默認輸出匹配行。它的使用權限是所有用戶。 GREP的工作方式是在一個或多個文件中搜索字

1、基本的正則表達式(Basic Regular Expression 又叫 Basic RegEx  簡稱 BREs)

1、正則表達式,又稱正規表示法、常規表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式

2、擴展的正則表達式(Extended Regular Expression 又叫 Extended RegEx 簡稱 EREs)

(\([^\)]*\)) //[^x] 匹配除了x以外的任意字符 //* 重復零次或更多次 //+ 重復一次或更多次

3、Perl 的正則表達式(Perl Regular Expression 又叫 Perl RegEx 簡稱 PREs)

 說明:只有掌握了正則表達式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

二、Linux 中常用文本工具與正則表達式的關系

常握 Linux 下幾種常用文本工具的特點,對于我們更好的使用正則表達式是很有幫助的

grep , egrep 正則表達式特點:

1)grep 支持:BREs、EREs、PREs 正則表達式

grep 指令后不跟任何參數,則表示要使用 ”BREs“

grep 指令后跟 ”-E" 參數,則表示要使用 “EREs“

grep 指令后跟 “-P" 參數,則表示要使用 “PREs"

2)egrep 支持:EREs、PREs 正則表達式

egrep 指令后不跟任何參數,則表示要使用 “EREs”

egrep 指令后跟 “-P" 參數,則表示要使用 “PREs"

3)grep 與 egrep 正則匹配文件,處理文件方法

a. grep 與 egrep 的處理對象:文本文件

b. grep 與 egrep 的處理過程:查找文本文件中是否含要查找的 “關鍵字”(關鍵字可以是正則表達式) ,如果含有要查找的 ”關健字“,那么默認返回該文本文件中包含該”關健字“的該行的內容,并在標準輸出中顯示出來,除非使用了“>" 重定向符號,

c. grep 與 egrep 在處理文本文件時,是按行處理的

sed 正則表達式特點

1)sed 文本工具支持:BREs、EREs

sed 指令默認是使用"BREs"

sed 命令參數 “-r ” ,則表示要使用“EREs"

2)sed 功能與作用

a. sed 處理的對象:文本文件

b. sed 處理操作:對文本文件的內容進行 --- 查找、替換、刪除、增加等操作

c. sed 在處理文本文件的時候,也是按行處理的

Awk(gawk)正則表達式特點

1)Awk 文本工具支持:EREs

awk 指令默認是使用 “EREs"

2)Awk 文本工具處理文本的特點

a. awk 處理的對象:文本文件

b. awk 處理操作:主要是對列進行操作

三、常見3中類型正則表達式比較

字符 說明 Basic RegEx Extended RegEx python RegEx Perl regEx
轉義 \ \ \ \
^ 匹配行首,例如'^dog'匹配以字符串dog開頭的行(注意:awk 指令中,'^'則是匹配字符串的開始) ^ ^ ^ ^
$ 匹配行尾,例如:'^、dog$'匹配以字符串 dog 為結尾的行(注意:awk 指令中,'$'則是匹配字符串的結尾) $ $ $ $

^$

匹配空行

^$ ^$ ^$ ^$
^string$ 匹配行,例如:'^dog$'匹配只含一個字符串 dog 的行 ^string$ ^string$ ^string$ ^string$
\< 匹配單詞,例如:'\<frog' (等價于'\bfrog'),匹配以 frog 開頭的單詞 \< \< 不支持 不支持(但可以使用\b來匹配單詞,例如:'\bfrog')

\>

匹配單詞,例如:'frog\>'(等價于'frog\b '),匹配以 frog 結尾的單詞 \> \> 不支持 不支持(但可以使用\b來匹配單詞,例如:'frog\b')

\<x\>

匹配一個單詞或者一個特定字符,例如:'\<frog\>'(等價于'\bfrog\b')、'\<G\>' \<x\> \<x\> 不支持 不支持(但可以使用\b來匹配單詞,例如:'\bfrog\b'

()

匹配表達式,例如:不支持'(frog)' 不支持(但可以使用\(\),如:\(dog\) () () ()

\(\)

匹配表達式,例如:不支持'(frog)' \(\) 不支持(同()) 不支持(同()) 不支持(同())

?

匹配前面的子表達式 0 次或 1 次(等價于{0,1}),例如:where(is)?能匹配"where" 以及"whereis" 不支持(同\?) ? ? ?
\? 匹配前面的子表達式 0 次或 1 次(等價于'\{0,1\}'),例如:'where\(is\)\? '能匹配 "where"以及"whereis" \? 不支持(同?) 不支持(同?) 不支持(同?)
? 當該字符緊跟在任何一個其他限制符(*, +, ?, {n},{n,}, {n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 "oooo",'o+?' 將匹配單個"o",而 'o+' 將匹配所有 'o' 不支持 不支持 不支持 不支持
. 匹配除換行符('\n')之外的任意單個字符(注意:awk 指令中的句點能匹配換行符) . .(如果要匹配包括“\n”在內的任何一個字符,請使用:'(^$)|(.) . .(如果要匹配包括“\n”在內的任何一個字符,請使用:' [.\n] '
* 匹配前面的子表達式 0 次或多次(等價于{0, }),例如:zo* 能匹配 "z"以及 "zoo" * * * *
\+ 匹配前面的子表達式 1 次或多次(等價于'\{1, \}'),例如:'where\(is\)\+ '能匹配 "whereis"以及"whereisis" \+ 不支持(同+) 不支持(同+) 不支持(同+)
+ 匹配前面的子表達式 1 次或多次(等價于{1, }),例如:zo+能匹配 "zo"以及 "zoo",但不能匹配 "z" 不支持(同\+) + + +

{n}

n 必須是一個 0 或者正整數,匹配子表達式 n 次,例如:zo{2}能匹配 不支持(同\{n\}) {n} {n} {n}
{n,} "zooz",但不能匹配 "Bob"n 必須是一個 0 或者正整數,匹配子表達式大于等于 n次,例如:go{2,} 不支持(同\{n,\}) {n,} {n,} {n,}
{n,m} 能匹配 "good",但不能匹配 godm 和 n 均為非負整數,其中 n <= m,最少匹配 n 次且最多匹配 m 次 ,例如:o{1,3}將配"fooooood" 中的前三個 o(請注意在逗號和兩個數之間不能有空格) 不支持(同\{n,m\}) {n,m} {n,m} {n,m}

x|y

匹配 x 或 y,例如: 不支持'z|(food)' 能匹配 "z" 或"food";'(z|f)ood' 則匹配"zood" 或 "food" 不支持(同x\|y) x|y x|y x|y

[0-9]

匹配從 0 到 9 中的任意一個數字字符(注意:要寫成遞增) [0-9] [0-9] [0-9] [0-9]

[xyz]

字符集合,匹配所包含的任意一個字符,例如:'[abc]'可以匹配"lay" 中的 'a'(注意:如果元字符,例如:. *等,它們被放在[ ]中,那么它們將變成一個普通字符) [xyz] [xyz] [xyz] [xyz]

[^xyz]

負值字符集合,匹配未包含的任意一個字符(注意:不包括換行符),例如:'[^abc]' 可以匹配 "Lay" 中的'L'(注意:[^xyz]在awk 指令中則是匹配未包含的任意一個字符+換行符) [^xyz] [^xyz] [^xyz] [^xyz]
[A-Za-z] 匹配大寫字母或者小寫字母中的任意一個字符(注意:要寫成遞增) [A-Za-z] [A-Za-z] [A-Za-z] [A-Za-z]
[^A-Za-z] 匹配除了大寫與小寫字母之外的任意一個字符(注意:寫成遞增) [^A-Za-z] [^A-Za-z] [^A-Za-z] [^A-Za-z]

\d

匹配從 0 到 9 中的任意一個數字字符(等價于 [0-9]) 不支持 不支持 \d \d

\D

匹配非數字字符(等價于 [^0-9]) 不支持 不支持 \D \D
\S 匹配任何非空白字符(等價于[^\f\n\r\t\v]) 不支持 不支持 \S \S
\s 匹配任何空白字符,包括空格、制表符、換頁符等等(等價于[ \f\n\r\t\v]) 不支持 不支持 \s \s
\W

匹配任何非單詞字符 (等價于[^A-Za-z0-9_])

\W \W \W \W
\w 匹配包括下劃線的任何單詞字符(等價于[A-Za-z0-9_]) \w \w \w \w
\B 匹配非單詞邊界,例如:'er\B' 能匹配 "verb" 中的'er',但不能匹配"never" 中的'er' \B \B \B \B

\b

匹配一個單詞邊界,也就是指單詞和空格間的位置,例如: 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的'er' \b \b \b \b
\t 匹配一個橫向制表符(等價于 \x09和 \cI) 不支持 不支持 \t \t
\v 匹配一個垂直制表符(等價于 \x0b和 \cK) 不支持 不支持 \v \v
\n 匹配一個換行符(等價于 \x0a 和\cJ) 不支持 不支持 \n \n
\f 匹配一個換頁符(等價于\x0c 和\cL) 不支持 不支持 \f \f
\r 匹配一個回車符(等價于 \x0d 和\cM) 不支持 不支持 \r \r
\\ 匹配轉義字符本身"\" \\ \\ \\ \\

\cx

匹配由 x 指明的控制字符,例如:\cM匹配一個Control-M 或回車符,x 的值必須為A-Z 或 a-z 之一,否則,將 c 視為一個原義的 'c' 字符 不支持 不支持 \cx

\xn

匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長,例如:'\x41' 匹配 "A"。'\x041' 則等價于'\x04' & "1"。正則表達式中可以使用 ASCII 編碼 不支持 不支持 \xn

\num

匹配 num,其中 num是一個正整數。表示對所獲取的匹配的引用 不支持 \num \num
[:alnum:] 匹配任何一個字母或數字([A-Za-z0-9]),例如:'[[:alnum:]] ' [:alnum:] [:alnum:] [:alnum:] [:alnum:]
[:alpha:] 匹配任何一個字母([A-Za-z]), 例如:' [[:alpha:]] ' [:alpha:] [:alpha:] [:alpha:] [:alpha:]
[:digit:] 匹配任何一個數字([0-9]),例如:'[[:digit:]] ' [:digit:] [:digit:] [:digit:] [:digit:]
[:lower:] 匹配任何一個小寫字母([a-z]), 例如:' [[:lower:]] ' [:lower:] [:lower:] [:lower:] [:lower:]
[:upper:] 匹配任何一個大寫字母([A-Z]) [:upper:] [:upper:] [:upper:] [:upper:]
[:space:] 任何一個空白字符: 支持制表符、空格,例如:' [[:space:]] ' [:space:] [:space:] [:space:] [:space:]
[:blank:] 空格和制表符(橫向和縱向),例如:'[[:blank:]]'ó'[\s\t\v]' [:blank:] [:blank:] [:blank:] [:blank:]
[:graph:] 任何一個可以看得見的且可以打印的字符(注意:不包括空格和換行符等),例如:'[[:graph:]] ' [:graph:] [:graph:] [:graph:] [:graph:]
[:print:] 任何一個可以打印的字符(注意:不包括:[:cntrl:]、字符串結束符'\0'、EOF 文件結束符(-1), 但包括空格符號),例如:'[[:print:]] ' [:print:] [:print:] [:print:] [:print:]

[:cntrl:]

任何一個控制字符(ASCII 字符集中的前 32 個字符,即:用十進制表示為從 0 到31,例如:換行符、制表符等等),例如:' [[:cntrl:]]'

[:cntrl:]

[:cntrl:]

[:cntrl:]

[:cntrl:]

[:punct:] 任何一個標點符號(不包括:[:alnum:]、[:cntrl:]、[:space:]這些字符集) [:punct:] [:punct:] [:punct:] [:punct:]
[:xdigit:] 任何一個十六進制數(即:0-9,a-f,A-F) [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:]

到此這篇關于grep中使用"\d"匹配數字不成功的原因解決的文章就介紹到這了,更多相關grep "\d"匹配數字 內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

grep可以,加上參數-o,其可用的最好的正則表達式引擎是perl風格的,需要在命令行加參數-P籠統地說正則表達式沒有意義,不同的語言利用正則表達式完成匹配后,想輸出什么,和正則表達式已經沒有關系了,完全看程序的邏輯,grep加上-o參數其實就是實現了“輸出匹配”的邏輯。如你的例子,假設內容存在test.txt中,則grep-P-o"A_[^\\sZ_]*_Z"test.txt如果只要中間的,不要A_和_Z,則grep-P-o"?[^\\sZ_]*?Z)"test.txt內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • linux 中grep 匹配制表符 和 換行符的命令
  • js基礎系列之正則表達式
  • 使用正則表達式生成隨機數據的方法
  • 常用正則表達式大全(金錢,非負整數,正整數,郵箱,手機號碼)
  • 正則表達式替換table表格中的樣式與空標記(保留rowspan與colspan
  • 獲取網址路徑的正則
  • android中手機號、車牌號正則表達式大全
  • 詳解linux中正則表達式的應用
  • 超常用的php正則表達式收集整理
  • 正則表達式判定保留2位小數的實現代碼
  • js通過正則限制 input 輸入框只能輸入整數、小數(金額或者現金)
  • 請問grep和正則表達式能不能只顯示找到的匹配此表...
  • grep '[a-z]\{7\} *.txt中\是什么意思
  • 正則表達式怎樣匹配任意字符?
  • 在linux系統如何grep過濾中,不包含某些字符
  • 正則表達式:如何匹配反斜杠 "/"
  • Linux Shell正則表達式如何匹配1~3位數字
  • GREP縮寫是什么含義?它的五大功能是什么?
  • 正則表達式匹配域名
  • 怎么用正則表達式匹配小括號里內容(含括號)?
  • grep和| grep的區別
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全javascriptasp.netphp編程ajax相關正則表達式asp編程jsp編程編程10000問css/htmlflex腳本加解密web2.0xml/rss網頁編輯器相關技巧安全相關網頁播放器其它綜合dart首頁正則表達式linux 中grep 匹配制表符 和 換行符的命令js基礎系列之正則表達式使用正則表達式生成隨機數據的方法常用正則表達式大全(金錢,非負整數,正整數,郵箱,手機號碼)正則表達式替換table表格中的樣式與空標記(保留rowspan與colspan獲取網址路徑的正則android中手機號、車牌號正則表達式大全詳解linux中正則表達式的應用超常用的php正則表達式收集整理正則表達式判定保留2位小數的實現代碼js通過正則限制 input 輸入框只能輸入整數、小數(金額或者現金) java 正則表達式詳解比較正宗的驗證郵箱的正則表達式正則表達式匹配任意字符(包括換最新手機號碼、電話號碼正則表達javascript 手機號碼正則表達式驗js利用正則配合replace替換指定字正則表達式匹配不包含某些字符串正則中需要轉義的特殊字符小結js正則函數match、exec、test、s最全的常用正則表達式大全——包正則表達式學習問答正則表達式i修飾符(大小寫不敏感)asp去掉html,保留img br p div的正則實現正則用(?&gt;…)實現固化分組提高效率js中2005-05-02怎么轉換為2005/5/2?正則替換換行符和把 br 替換成換行符js正則表達式學習筆記一個替換目錄結構的正則表達式 實現目錄的ip地址正則表達式匹配方法layui 正則表達式驗證使用實例詳解
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载