欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編程中正則表達式的用法總結

 更新時間:2016年05月11日 17:27:18   作者:超低空  
這篇文章主要介紹了Java編程中正則表達式的用法總結,正則表達式是一種強大的字符串處理工具,Java對正則表達式的支持還是很不錯的,我們先來整理一下正則表達式的一些基礎知識:

1. 字符串中的正則表達式
使用正則表達式可以對字符串進行查找、提取、分割、替換等操作。String類當中提供了如下幾個特殊方法:

boolean matches(String regex):判斷該字符串是否匹配指定的正則表達式。
String replaceAll(String regex, String replacement):將該字符串中所有匹配regex的子串替換成replacement。
String[] split(String regex):以regex作為分隔符,把該字符串分割成多個子串。
以上這些特殊的方法都依賴于Java提供的正則表達式。

2. 創(chuàng)建正則表達式
x: 字符x(x可代表任何合法的字符);
\0mnn: 八進制數(shù)Omnn所表示的字符;
\xhh: 十六進制0xhh所表示的字符;
\uhhhh: 十六進制0xhhhh所表示的UNICODE字符;
\t :制表符('\u0009');
\n: 新行(換行)符('\u000A');
\r: 回車符('\u000D');
\f: 換頁符('\u000C');
\a: 報警(bell)符('\u0007');
\e: Escape符('\u001B');
\cx: x對應的控制符。例如,\cM匹配Ctrl-M。x值必須為A~Z或a~z之一;

3. 正則表達式中的特殊字符
$: 匹配一行的結尾。要匹配$字符本身,請使用\$;
^: 匹配一行的開頭。要匹配^字符本身,請使用\^;
(): 標記子表達式的開始和結束位置。要匹配這些字符,請使用\(和\);
[]: 用于確定中括號表達式的開始和結束位置。要匹配這些字符,請使用\[和\];
{}: 用于標記前面子表達式的出現(xiàn)的頻度。要匹配這些字符,請使用\{和\};
*: 指定前面子表達式可以出現(xiàn)零次或多次。要匹配*字符本身,請使用\*;
+: 指定前面子表達式可以出現(xiàn)一次或多次。要匹配+字符本身,請使用\+;
?: 指定前面子表達式可以出現(xiàn)零次或一次。要匹配?字符本身,請使用\?;
.: 匹配除換行符\n之外的任何單位字符。要匹配,字符本身,請使用\.;
\:用于轉義下一個字符,或指定八進制、十六進制符。要匹配\字符,請使用\\;
|:指定兩項之間任選一項。要匹配|字符本身,請使用\|;

4. 預定義字符
.: 可以匹配任何字符;
\d:匹配0~9的所有數(shù)字;
\D:匹配非數(shù)字;
\s:匹配所有的空白字符,包括空格、制表符、回車符、換頁符、換行符等;
\S:匹配所有的非空白字符;
\w:匹配所有的單詞字符,包括0~9所有的數(shù)字、26個英文字母和下劃線(_);
\W:匹配所有的非單詞字符;

5. 邊界匹配符
^: 行的開頭
$: 行的結尾
\b: 單詞的邊界
\B: 非單詞的邊界
\A: 輸入的開頭
\G: 前一個匹配的結尾
\Z: 輸入的結尾,僅用于最后的結束符
\z: 輸入的結尾

6. 表示匹配次數(shù)的符號
下圖顯示了表示匹配次數(shù)的符號,這些符號用來確定緊靠該符號左邊的符號出現(xiàn)的次數(shù):

2016511172027027.jpg (419×220)

(1)假設我們要在文本文件中搜索美國的社會安全號碼。這個號碼的格式是999-99-9999。用來匹配它的正則表達式如圖一所示。在正則表達式中,連字符(“-”)有著特殊的意義,它表示一個范圍,比如從0到9。因此,匹配社會安全號碼中的連字符號時,它的前面要加上一個轉義字符“\”。

2016511172049773.gif (458×87)

(2)假設進行搜索的時候,你希望連字符號可以出現(xiàn),也可以不出現(xiàn)——即,999-99-9999和999999999都屬于正確的格式。這時,你可以在連字符號后面加上“?”數(shù)量限定符號,如圖所示:

2016511172108085.gif (512×93)

(3)下面我們再來看另外一個例子。美國汽車牌照的一種格式是四個數(shù)字加上二個字母。它的正則表達式前面是數(shù)字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。下圖顯示了完整的正則表達式。

2016511172149603.gif (269×66)

7.一些實例
例子1

function replace(content){
 var reg = '\\[(\\w+)\\]',
  pattern = new RegExp(reg, 'g');
 return content.replace(pattern, '<img src="img/$1.png">');
}
//或
function replace(content){
 return content.replace(/\[(\w+)\/g, '<img src="img/$1.png">');
}

例子2

//zero-width look behind的替換方案
//(?<=...)和(?<!...)
//方法一:反轉字符串,用lookahead進行搜索,替換以后再倒回來,例如:
String.prototype.reverse = function () {
  return this.split('').reverse().join('');
}
//模擬'foo.bar|baz'.replace(/(?<=\.)b/, 'c') 即將前面有'.'的b換成c
'foo.bar|baz'.reverse().replace(/b(?=\.)/g, 'c').reverse() //foo.car|baz

//方法二:不用零寬斷言,自己判斷
//模擬'foo.bar|baz'.replace(/(?<=\.)b/, 'c') 即將前面有'.'的b換成c
'foo.bar|baz'.replace(/(\.)?b/, function ($0, $1) {
  return $1 ? $1 + 'c' : $0;  
}) //foo.car|baz
//模擬'foo.bar|baz'.replace(/(?<!\.)b/, 'c') 即將前面沒有'.'的b換成c
'foo.bar|baz'.replace(/(\.)?b/, function ($0, $1) {
  return $1 ? $0 : 'c';  
}) //foo.bar|caz
//這個方法在一些比較簡單的場景下有用,并且可以和lookahead一起用
//但也有很多場景無效,例如:
//'tttt'.replace(/(?<=t)t/g, 'x') 結果應該是'txxx'
'tttt'.replace(/(t)?t/g, function ($0, $1) {
  return $1 ? $1 + 'x' : $0;
}) // txtx

例子3

$&符號的使用

function escapeRegExp(str) {
 return str.replace(/[abc]/g, "($&)");
}

var str = 'a12b34c';
console.log(escapeRegExp(str)); //(a)12(b)34(c)

相關文章

  • Java 數(shù)據(jù)結構算法Collection接口迭代器示例詳解

    Java 數(shù)據(jù)結構算法Collection接口迭代器示例詳解

    這篇文章主要為大家介紹了Java 數(shù)據(jù)結構算法Collection接口迭代器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java編程實現(xiàn)的二維數(shù)組轉置功能示例

    Java編程實現(xiàn)的二維數(shù)組轉置功能示例

    這篇文章主要介紹了Java編程實現(xiàn)的二維數(shù)組轉置功能,結合實例形式分析了Java二維數(shù)組的遍歷、運算、賦值等實現(xiàn)轉置的相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • feign 調用第三方服務中部分特殊符號未轉義問題

    feign 調用第三方服務中部分特殊符號未轉義問題

    這篇文章主要介紹了feign 調用第三方服務中部分特殊符號未轉義問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實現(xiàn)操作系統(tǒng)的短進程作業(yè)調度示例分享

    java實現(xiàn)操作系統(tǒng)的短進程作業(yè)調度示例分享

    java編寫的實現(xiàn)了操作系統(tǒng)中的短作業(yè)進程,可以實現(xiàn)幾道作業(yè)同時作業(yè)調度
    2014-02-02
  • Java8 Lambda和Invokedynamic詳情

    Java8 Lambda和Invokedynamic詳情

    關于Java8的Lambda 我們可以將lambda表達式與新的Streams API結合起來,以表達豐富的數(shù)據(jù)處理查詢,下面文章小編就列舉簡單的例子給大家介說吧,感興趣的小伙伴可以參考下面文章的具體內容奧
    2021-09-09
  • 基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn)

    基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn)

    這篇文章主要介紹了基于Java的Socket多客戶端Client-Server聊天程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java微信授權登陸的實現(xiàn)示例

    Java微信授權登陸的實現(xiàn)示例

    微信授權登錄,官方文檔寫的比較簡潔。所以對于會的人一目了然,而對于新手剛入門的人來說是舉步維艱。本文詳細的介紹了Java微信授權登陸的實現(xiàn)示例,感興趣的朋友可以了解一下
    2021-06-06
  • Java?九宮重排(滿分解法)

    Java?九宮重排(滿分解法)

    本文主要介紹了Java?九宮重排(滿分解法),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • HotSpot的Java對象模型之Oop-Klass模型詳解

    HotSpot的Java對象模型之Oop-Klass模型詳解

    這篇文章主要介紹了HotSpot的Java對象模型之Oop-Klass模型詳解,在JVM層面,不僅Java類是對象,Java 方法也是對象, 字節(jié)碼常量池也是對象,一切皆是對象,JVM使用不同的oop-klass模型來表示各種不同的對象,需要的朋友可以參考下
    2023-08-08
  • 詳解JavaWeb中的 Listener

    詳解JavaWeb中的 Listener

    JavaWeb里面的listener是通過觀察者設計模式進行實現(xiàn)的。下面通過本文給大家詳細介紹javaweb中的listener,感興趣的朋友一起看看吧
    2016-09-09

最新評論