今天在Java中想使用正則表達(dá)式來獲取一段文本中的任意字符。于是很隨意得就寫出如下匹配規(guī)則:
(.*)
結(jié)果運行之后才發(fā)現(xiàn),無法獲得換行之后的文本。于是查了一下手冊,才發(fā)現(xiàn)正則表達(dá)式中,“.”(點符號)匹配的是除了換行符“n”以外的所有字符。同時,手冊上還有一句話:要匹配包括 ‘n’ 在內(nèi)的任何字符,請使用像 ‘[.n]’ 的模式。于是我將正則表達(dá)式的匹配規(guī)則修改如下:
([.n]*),當(dāng)然,如果是在java程序中直接寫到話,需要改為([.\n]*)
結(jié)果再次運行程序,發(fā)現(xiàn)什么內(nèi)容也取不到了。我百思不得其解,又將其修改為如下規(guī)則:
([.|n]*) 以及 ([n.]*)
結(jié)果還是不行,什么內(nèi)容都取不到??磥睃c符號和換行符卯上勁了~
然后上網(wǎng)一查,雖然沒有查出上述規(guī)則到底是什么地方出問題了,但是查出了一個解決辦法,經(jīng)過一試,果然可以匹配包括換行符在內(nèi)的任意字符,以下為正確的正則表達(dá)式匹配規(guī)則:
([sS]*)
同時,也可以用 “([dD]*)”、“([wW]*)” 來表示。
在文本文件里, 這個表達(dá)式可以匹配所有的英文
/[ -~]/
這個表達(dá)式可以匹配所有的非英文(比如中文)
/[^ -~]/
/是VI里用的. 你在editplus或程序里不需要/