首页 > 代码库 > 正则表达式与特殊符号

正则表达式与特殊符号

特殊符号 

[:alnum:]  代表英文大小写字符及数字,即  0-9, A-Z, a-z
[:alpha:]  代表任何英文大小写字符,即  A-Z, a-z
[:upper:]  代表大写字符,即  A-Z
[:lower:]  代表小写字符,即  a-z

[:digit:]  代表数字而已,即 0-9
[:xdigit:]  代表 16 进制数字类型,因此包括: 0-9, A-F, a-f 的数字与字符

[:blank:]  空格与Tab
[:space:]  任何会产生空白的字符,包括空格键, [Tab], CR 等等
[:graph:]  除了空格符(空格和Tab键外的其他所有按键

[:cntrl:]  控制按键,包括 CR(换行), LF(换行), Tab, Del.. 等等
[:print:]  代表任何可以被打印的字符
[:punct:]  代表标点符号 (punctuation symbol),即:" ‘ ? ! ; : # $...

RE 字符

^word
    待搜索的字符串word在行首
    eg:grep ‘^hello‘  test.txt 表示test.txt中以hello开头的行
    ^word与[^word]意义相差极大
word$
    带搜索的字符串word在行尾
    eg: grep ‘!$‘   test.txt    表示test.txt中以感叹号!结尾的行
.
    含一个任意字符,有且仅有一个字符(可以使空格)
    grep ‘a.a‘    test.txt    表示test.txt中两个a中间可以使任意一个字符的行,不能是‘aa‘
    笔者测试时换行符是不算的
    eg:grep ‘aa.‘  test.txt   以[^a]*aa结尾的行市不算的
\
    转义字符,跟C语言一样
    grep -n \‘  test.txt 表示test.txt中含单引号‘的行
*
     重复0到无穷多次前一个字符
     eg:grep go*gle test.txt     表示gogle,google,gooogle,gooo...gle
[list]
     要选取的字符集合
     eg:grep ‘l[ace]‘ test.txt     表示test.txt中含有la或lb或lc的行
[n1-n2]
     要搜索的字符范围
    eg:grep  ‘[0-9]‘ test.txt 表示含有任意数字字符的行
[^list]
     反向选择范围
      eg:grep  ‘[^0-9]‘ test.txt 表示含有任意非数字字符的行
      eg:grep  ‘l[^ace]‘ test.txt 表示含有l后面接任意一个不是a,b,c的字符的行
     注:[list][^list]并不是互为补集
    
行abcd1234既属于grep  ‘[0-9]‘ test.txt 又属于grep  ‘[^0-9]‘ test.txt 
    行abcd1234既属于grep  ‘[ace]‘ test.txt 又属于grep  ‘[^ace]‘ test.txt


\{n,m\}      \{n\}

\{n\} 表示重复n次前一个字符
\{n,m\} 表示重复n到m次前一个字符
grep ‘go\{2\}gle‘  test.txt 表示 gooogle
grep ‘go\{1,3\}gle‘  test.txt 表示 google或者gooogle,或者goooogle