在使用Pattern.compile函數(shù)時(shí),可以加入控制正則表達(dá)式的匹配行為的參數(shù):
?
flag的取值范圍如下:?
以上內(nèi)容中提到的Pattern.UNIX_LINES(?d)完整的相關(guān)解釋如下:
????? 默認(rèn)情況下(沒有使用UNIX——LINES時(shí))是識(shí)別完整的行終結(jié)符,匹配文本行邊界的元字符會(huì)把CR/LF視為不可分隔的單位,一次性匹配這兩個(gè)字符。
????? 舉例來說,$和\Z通常會(huì)匹配行終結(jié)符之前的位置。LF是行終結(jié)符,但只有在它不屬于CR/LF(也就是說,LF之前沒有CR)的情況下,$和\Z才能匹配字符串末尾的LF之前的位置。
????? MUTILINE模式中的$和^也是如此,在這種模式下,只有在CR之后沒有LF的情況下,^才能匹配CR之后的位置;只有在LF之前不是CR的情況下,$才能匹配LF之前的位置。
????? 必須說清楚的是,DOTALL對(duì)CR/LF的處理沒有影響(DOTALL只影響點(diǎn)號(hào),而點(diǎn)號(hào)總是逐個(gè)處理字符的),UNIX——LINES根本不存在此類問題(它只識(shí)別CR,所有其它行終結(jié)符都不需要特殊處理)。
?
注:
Pattern Pattern.compile(String regex, int flag)
flag的取值范圍如下:?
Pattern.CANON_EQ 當(dāng)且僅當(dāng)兩個(gè)字符的"正規(guī)分解(canonical decomposition)"都完全相同的情況下,才認(rèn)定匹配。比如用了這個(gè)標(biāo)志之后,表達(dá)式"a\u030A"會(huì)匹配"?"。默認(rèn)情況下,不考慮"規(guī)范相等性(canonical equivalence)"。?
Pattern.CASE_INSENSITIVE(?i) 默認(rèn)情況下,大小寫不明感的匹配只適用于US-ASCII字符集。這個(gè)標(biāo)志能讓表達(dá)式忽略大小寫進(jìn)行匹配。要想對(duì)Unicode字符進(jìn)行大小不明感的匹配,只要將UNICODE_CASE與這個(gè)標(biāo)志合起來就行了。?
Pattern.COMMENTS(?x) 在這種模式下,匹配時(shí)會(huì)忽略(正則表達(dá)式里的)空格字符(譯者注:不是指表達(dá)式里的"\\s",而是指表達(dá)式里的空格,tab,回車之類)。注釋從#開始,一直到這行結(jié)束。可以通過嵌入式的標(biāo)志來啟用Unix行模式。
Pattern.DOTALL(?s) 在這種模式下,表達(dá)式'.'可以匹配任意字符,包括表示一行的結(jié)束符。默認(rèn)情況下,表達(dá)式'.'不匹配行的結(jié)束符。
Pattern.MULTILINE (?m) 在這種模式下,'^'和'$'分別匹配一行的開始和結(jié)束。此外,'^'仍然匹配字符串的開始,'$'也匹配字符串的結(jié)束。默認(rèn)情況下,這兩個(gè)表達(dá)式僅僅匹配字符串的開始和結(jié)束。?
Pattern.UNICODE_CASE (?u) 在這個(gè)模式下,如果你還啟用了CASE_INSENSITIVE標(biāo)志,那么它會(huì)對(duì)Unicode字符進(jìn)行大小寫不明感的匹配。默認(rèn)情況下,大小寫不敏感的匹配只適用于US-ASCII字符集。?
Pattern.UNIX_LINES(?d) 在這個(gè)模式下,只有'\n'才被認(rèn)作一行的中止,并且與'.','^',以及'$'進(jìn)行匹配
以上內(nèi)容中提到的Pattern.UNIX_LINES(?d)完整的相關(guān)解釋如下:
????? 默認(rèn)情況下(沒有使用UNIX——LINES時(shí))是識(shí)別完整的行終結(jié)符,匹配文本行邊界的元字符會(huì)把CR/LF視為不可分隔的單位,一次性匹配這兩個(gè)字符。
????? 舉例來說,$和\Z通常會(huì)匹配行終結(jié)符之前的位置。LF是行終結(jié)符,但只有在它不屬于CR/LF(也就是說,LF之前沒有CR)的情況下,$和\Z才能匹配字符串末尾的LF之前的位置。
????? MUTILINE模式中的$和^也是如此,在這種模式下,只有在CR之后沒有LF的情況下,^才能匹配CR之后的位置;只有在LF之前不是CR的情況下,$才能匹配LF之前的位置。
????? 必須說清楚的是,DOTALL對(duì)CR/LF的處理沒有影響(DOTALL只影響點(diǎn)號(hào),而點(diǎn)號(hào)總是逐個(gè)處理字符的),UNIX——LINES根本不存在此類問題(它只識(shí)別CR,所有其它行終結(jié)符都不需要特殊處理)。
?
注:

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
