grep、sed、awk、perl等對正則表達式的支持的差別

jopen 10年前發布 | 13K 次閱讀 正則表達式

在各種常用的工具中,
正則表達式如此的相似卻又不同。
下表列出了一些常用的正則表達式,以及其不同之處。
項目總多,遺漏必有不少,請各位看官不吝指出。
以perl的正則為基準,不同的用法以粉紅色標出。

</tr>

</tr> </tbody> </table>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

grep 2.5.1egrep 2.5.1sed 3.02
sed 4.07
awk 3.1.1perl 5.8.0vim 6.1JavaScript ??
轉義 \ \ \ \ \ \ \
行頭 ^ ^ ^ ^ ^ ^ ^
行尾 $ $ $ $ $ $ $
n個 {n} {m,n} {m,} {,n} \{n\} {n} \{n\} {n}或\{n\} 僅定義 --posix 或 --re-interval有效(要表達}和{,得用\\{和\\} 沒有定義--posix或--re-interval時,不能用{n}的語法, \}\{和}{同義 {n} \{n\} {n}
{0,} * * * *或\*, (要表達*,得用\\*) * * *
{1,} \+ + \+ +或\+, (要表達+, 得用\\+) + \+ +
{0,1} \? ? \? ?或\?, (要表達?, 得用\\?) ? \? ?
任意字符 . . . . 含\n. . /s修飾后則含\n . 除\n . 除\n
(pat) 匹配并獲結果 \(pat\) (pat) \(pat\) (pat)或\(pat\) (要表達括號,用\\( \\) ) (pat) \(pat\) (pat)
(?:pat) 匹配但不獲結果 不支持 不支持 不支持 不支持 (?:pat) 不支持 (?:pat)
(?=pat) 等于預查 不支持 不支持 不支持 不支持 (?=pat) 不支持 (?=pat)
(?!pat) 不等預查 不支持 不支持 不支持 不支持 (?!pat) 不支持 (?!pat)
| 或 \| | \| |或\| (要表達|,得用\\|) | \| |
其中任意字符 [xyz] [xyz] [xyz] [xyz] [xyz] [xyz] [xyz]
[.ch.] [=ch=] 不支持 不支持 [.ch.] 不支持 不支持 不支持 不支持
單詞邊界 \b \b \b \b 不支持 \b 不支持 \b
非單詞邊界 \B \B \B \B 不支持 \B 不支持 \B
單詞左右邊界 <> \< \> \< \> \< \> 不支持 (><和\>\<和\\>\\<同義 不支持(><和\>\<同義 \< \> 不支持(><和\>\<同義
控制字符 /cx 不支持 不支持 \cx 不支持 \cx 不支持 \cx
數字\d 不支持 不支持 不支持 不支持 \d \d \d
非數字\D 不支持 不支持 不支持 不支持 \D \D \D
換頁 \f 不支持 不支持 高版本支持 \f \f 另義 \f表示文件名字符 \f
換行 \n 不支持 不支持 不支持 \n \n \n \n
回車 \r 不支持 不支持 \r \r \r \r \r
空白 \s 不支持 不支持 不支持 不支持 \s \s \s
非空白 \S 不支持 不支持 不支持 不支持 \S \S \S
制表符 \t 不支持 不支持 高版本支持 \t \t \t \t
垂直制表符 \v 不支持 不支持 高版本支持 \v \v 另義 \v表示very magic \v
單詞字符 \w [A-Za-z0-9_] \w \w \w 不支持 \w \w \w
非單詞字符 \W [^A-Za-z0-9] \W \W \W 不支持 \W \W \W
\xn 16進制 不支持 不支持 高版本支持 \xn \xn 另義 \x表示[0-9A-Za-z] \xn
\n 八進制 不支持 不支持 不支持 \n \n 不支持 \n
\n 后向引用 \n \n \n \n 僅取結果可用 \n \n 僅取結果可用 \n
[:alnum:] 字母和數字 [:alnum:] [:alnum:] [:alnum:] [:alnum:] [:alnum:] [:alnum:] 不支持
[:alpha:] 字母 [:alpha:] [:alpha:] [:alpha:] [:alpha:] [:alpha:] [:alpha:] 不支持
[:cntrl:] 控制字符 [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] 不支持
[:digit:] 數字 [:digit:] [:digit:] [:digit:] [:digit:] [:digit:] [:digit:] 不支持
[:graph:] 可打印字符(不含空格) [:graph:] [:graph:] [:graph:] [:graph:] [:graph:] [:graph:] 不支持
[:lower:] 小寫 [:lower:] [:lower:] [:lower:] [:lower:] [:lower:] [:lower:] 不支持
[:print:] 可打印字符(含空格) [:print:] [:print:] [:print:] [:print:] [:print:] [:print:] 不支持
[:punct:] 標點 [:punct:] [:punct:] [:punct:] [:punct:] [:punct:] [:punct:] 不支持
[:space:] 空格 [:space:] [:space:] [:space:] [:space:] [:space:] [:space:] 不支持
[:upper:] 大寫字母 [:upper:] [:upper:] [:upper:] [:upper:] [:upper:] [:upper:] 不支持
[:xdigit:] 16進制數字 [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] 不支持
[:return:] 不支持 不支持 不支持 不支持 不支持 [:return:] 不支持
[:tab:] 不支持 不支持 不支持 不支持 不支持 [:tab:] 不支持
[:escape:] 不支持 不支持 不支持 不支持 不支持 [:escape:] 不支持
[:backspace:] 不支持不支持不支持不支持不支持[:backspace:]不支持
  • sesese色