在正則表達式中,[...]
代表1個字符,不管里面有多少字符,最終這個東西的結果都是1個字符。
對于表達式[^a]
表達的匹配除了a之外的字符,并且是1個字符。
需要注意的是,有些特殊字符是不會被匹配的。
我們看一個示例,對于txt文件testRegularExperxx.txt
aaabbb
對于該文件,輸入命令grep -n '[^a]' testRegularExperxx.txt
得到的結果是:
你會發現,對于看起來的“空行”的處理似乎是不一樣的,為什么呢?
仔細看看文件,雖然都是空行,但是,有的是空格,有的是 \t,有的是 \n。它們看起來都是空的,但是處理方式不一樣。
這里,對于[^]a
除了a之外的1個字符,能夠識別空格和 \t,而忽略掉 \t。
我們換一個新的文件,看看文件的內容
選中的時候顏色不同,也可以看出端倪來。
Hex | Char | Description | Escape Character |
---|---|---|---|
09 | HT | Horizontal Tab | \t |
0a | LF | Line Feed | \n |
20 | space | Space |
所以,你就知道了[...]
的特殊的地方了。
那么如何識別空行呢?也就是僅包含\n
的行。
使用^$
識別!這也是比較特殊的點了。
小結
[...]
不能識別\n
^$
可以識別\n
,但是注意,是識別一行僅有\n
的空行
另外,正則表達式的不同規則,是可以進行花樣排列組合,從而識別復雜單詞!進一步也可以作為詞法分析的實用工具。