亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于對(duì)Java正則表達(dá)式"\\"的理解

 更新時(shí)間:2022年09月19日 09:35:23   作者:Star-King  
正則表達(dá)式中,\代表轉(zhuǎn)義字符,通常是轉(zhuǎn)義一些特殊字符,下面這篇文章主要給大家介紹了關(guān)于對(duì)Java正則表達(dá)式"\\"的相關(guān)理解,需要的朋友可以參考下

相信很多人在使用正則表達(dá)式的時(shí)候都會(huì)遇到如下的語句:

通過查閱正則表達(dá)式的API文檔可以了解到正則表達(dá)式的語法知識(shí):

很多小伙伴就會(huì)產(chǎn)生疑問為什么語法是"\d"(或是"\D"、"\w"),為什么在語句中使用的時(shí)候就變成了"\\"   ??????

下面以"\\d"為例:

理解一:

這要分兩步看

①.首先字符串中的\\被編譯器解釋為\    ------>    第一步,編譯器將字符串轉(zhuǎn)變?yōu)?ldquo;正則表達(dá)式”

②.然后作為正則表達(dá)式,\d又被正則表達(dá)式引擎解釋為“數(shù)字[0--9]"    ------> 第二步,才開始把第一步的結(jié)果當(dāng)做是正則表達(dá)式,開始進(jìn)行匹配!

理解二:

這個(gè)是由兩部分組成的   \ 轉(zhuǎn)義符 +  \d 是一個(gè)正則表達(dá)式。標(biāo)識(shí)所有數(shù)字及0-9

之所以要加\是因?yàn)樵贘AVA中一些特殊的符號(hào)(回車)是沒有符號(hào)代表的。所以需要轉(zhuǎn)義符這個(gè)概念。而像回車這類轉(zhuǎn)義符都是由\開始的。那么就出現(xiàn)了第二個(gè)問題,如果我要輸入的恰恰是\符號(hào)怎么辦?那么這個(gè)問題就還用轉(zhuǎn)義符來解決。即為轉(zhuǎn)義字符的再轉(zhuǎn)義,就可以讓編譯器識(shí)別到我們輸入的并不是一個(gè)特殊字符,而是一個(gè)表示特定含義的正則表達(dá)式"\d"。

補(bǔ)充:為什么“java正則表達(dá)式中匹配一個(gè)反斜杠要用四個(gè)反斜杠”,java正則表達(dá)式為啥用兩個(gè)\\表示一個(gè)\

首先我們知道在正則表達(dá)式中\(zhòng)代表轉(zhuǎn)義,而java中\(zhòng)也代表轉(zhuǎn)義(一些字母前加\來表示常見的那些不能顯示的ASCII字符,如\0,\t,\n等,就稱為轉(zhuǎn)義字符)。

根據(jù)“jdk API中的原話:根據(jù) Java Language Specification 的要求,Java 源代碼的字符串中的反斜線被解釋為 Unicode 轉(zhuǎn)義或其他字符轉(zhuǎn)義。因此必須在字符串字面值中使用兩個(gè)反斜線,表示正則表達(dá)式受到保護(hù),不被 Java 字節(jié)碼編譯器解釋。”

根據(jù)“thinking中的一段話:如果在其他語言中使用過正則表達(dá)式,那你就立刻能發(fā)現(xiàn)Java對(duì)反斜線\的不同處理.在其他語言中,\表示"我想要在正則表達(dá)式中插入一個(gè)普通的(字面上的)反斜線,請(qǐng)不要給他任何特殊的意義."而在Java中,\的意思是"我要插入一個(gè)正則表達(dá)式的反斜線,所以其后的字符具有特殊的意義."例如,如果你想表示一位數(shù)字,那么正則表達(dá)式應(yīng)該是\d.如果你想插入一個(gè)普通的反斜線,則應(yīng)該這樣用\\.不過換行和制表符之類的東西只需使用單反斜線:\n\t. ”

也就是java解釋字符串時(shí),正則表達(dá)式受到保護(hù)(可以這樣理解:先由java解釋器解釋字符串,然后再由正則表達(dá)式解釋器解釋正則表達(dá)式),

那么

String pattern = "a\\\\b";

首先被java解釋器解釋為“a\b”(第一個(gè)和第三個(gè)\代表轉(zhuǎn)義,此時(shí)正則表達(dá)式受到保護(hù),不被解釋),再被正則解釋器解釋為"a\b"。即java中由4個(gè)\表示一個(gè)\。也就是他文中所說的java正則表達(dá)式被解釋兩次。

總結(jié)

到此這篇關(guān)于對(duì)Java正則表達(dá)式"\\"理解的文章就介紹到這了,更多相關(guān)Java正則表達(dá)式"\\"內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Map.Entry的使用方法解析

    Java Map.Entry的使用方法解析

    這篇文章主要介紹了Java Map.Entry的使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot整合mybatisplus和druid的示例詳解

    SpringBoot整合mybatisplus和druid的示例詳解

    這篇文章主要介紹了SpringBoot整合mybatisplus和druid的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java實(shí)現(xiàn)AOP代理的三種方式詳解

    Java實(shí)現(xiàn)AOP代理的三種方式詳解

    AOP是一種設(shè)計(jì)思想,是軟件設(shè)計(jì)領(lǐng)域中的面向切面編程,它是面向?qū)ο缶幊痰囊环N補(bǔ)充和完善。本文將用Java實(shí)現(xiàn)AOP代理的三種方式,需要的可以參考一下
    2022-07-07
  • Java中byte[]、String、Hex字符串等轉(zhuǎn)換的方法

    Java中byte[]、String、Hex字符串等轉(zhuǎn)換的方法

    這篇文章主要介紹了Java中byte[]、String、Hex字符串等轉(zhuǎn)換的方法,代碼很簡單,需要的朋友可以參考下
    2018-05-05
  • jsp+servlet實(shí)現(xiàn)簡單登錄頁面功能(附demo)

    jsp+servlet實(shí)現(xiàn)簡單登錄頁面功能(附demo)

    本文主要介紹了jsp+servlet實(shí)現(xiàn)簡單登錄頁面功能登錄成功跳轉(zhuǎn)新頁面,登錄失敗在原登錄界面提示登錄失敗信息,對(duì)初學(xué)者有一定的幫助,感興趣的可以了解一下
    2021-07-07
  • Java實(shí)現(xiàn)的Windows資源管理器實(shí)例

    Java實(shí)現(xiàn)的Windows資源管理器實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)的Windows資源管理器,實(shí)例分析了基于java實(shí)現(xiàn)windows資源管理器的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 如何解決springboot數(shù)據(jù)庫查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問題

    如何解決springboot數(shù)據(jù)庫查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問題

    這篇文章主要介紹了如何解決springboot數(shù)據(jù)庫查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Spring boot webService使用方法解析

    Spring boot webService使用方法解析

    這篇文章主要介紹了Spring boot webService使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 分析Netty直接內(nèi)存原理及應(yīng)用

    分析Netty直接內(nèi)存原理及應(yīng)用

    Netty作為一個(gè)流行的應(yīng)用框架,它的強(qiáng)悍之處是性能強(qiáng)悍,可以輕松承載數(shù)萬并發(fā); 其編程模型簡單,容易上手; 這就給大家打開了一扇通向高性能的大門。高效io模型略去不說,我們今天主要來看看內(nèi)存控制這塊的強(qiáng)大之處
    2021-06-06
  • mybatis typeAliases 給實(shí)體類起別名的方法

    mybatis typeAliases 給實(shí)體類起別名的方法

    這篇文章主要介紹了mybatis typeAliases 給實(shí)體類起別名,本文給大家分享兩種用法,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論