一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 實例解析Java程序中正則表達式的貪婪模式匹配

實例解析Java程序中正則表達式的貪婪模式匹配

2020-04-27 12:39chaofanwei JAVA教程

貪婪模式又叫最大匹配,X?、X*、X+、X{n,}都是最大匹配,例如你要用“<.+>”去匹配“aaava abb”,也許你所期待的結果是想匹配“”,但是實際結果卻會匹配到“aava ”,下面我們就來看具體看一下貪婪模式的使用.

貪婪模式(Greedy):

數量表示符默認采用貪婪模式,除非另有表示。貪婪模式的表達式會一直匹配下去,直到無法匹配為止。如果你發現表達式匹配的結果與預期的不符,很有可能是因為——你以為表達式只會匹配前面幾個字符,而實際上它是貪婪模式,所以會一直匹配下去。
貪婪與非貪婪,加上?為非貪婪:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var s = '1023000'.match(/(\d+)(0*)/);
s
["1023000", "1023000", ""]
 
var s = '1023000'.match(/^(\d+)(0*)$/);
s
["1023000", "1023000", ""]
 
var s = '1023000'.match(/^(\d+?)(0*)$/);
s
["1023000", "1023", "000"]
 
var s = '1023000'.match(/(\d+?)(0*)/);
s
["10", "1", "0"]

java 正則表達式默認用的是greedy貪婪匹配模式既是這種類型(.*)的最長匹配,如果需要最短匹配則改為(.*?)即是勉強匹配模式。
原理分析:
如果是貪婪匹配模式,正則表達式引擎會一直匹配到字符串最后,當匹配為false時,通過
回溯的方式,倒退找到倒數第一個匹配位置,返回匹配結果
如果是勉強匹配模式,正則表達式引擎會匹配到符合pattern的末尾位置那個字符,然后再往后走一步,發現匹配為false,又回溯到找到回退的最近一個匹配為true的位置,返回結果。
看代碼:
例一:

?
1
2
3
4
5
6
public void test51(){
  String str = "aaa\"bbb\"ccc\"ddd\"eee";
  System.out.println(str);
  str = str.replaceAll("\"(.*)\"", "@");
  System.out.println(str);
}

輸出:

?
1
2
aaa"bbb"ccc"ddd"eee
aaa@eee

例二:

?
1
2
3
4
5
6
7
8
9
@Test
 public void test52(){
   String str = "aaa\"bbb\"ccc\"ddd\"eee";
   System.out.println(str);
    
   str = str.replaceAll("\"(.*?)\"", "@");
   System.out.println(str);
    
 }

輸出:

?
1
2
aaa"bbb"ccc"ddd"eee
aaa@ccc@eee

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九精品国产亚洲A片无码 九九99热久久999精品 | 日本高清免费中文字幕不卡 | 四虎一影院区永久精品 | 免费人成黄页在线观看69 | 俄罗斯一级成人毛片 | 成人欧美视频在线看免费 | 免费日批软件 | 国产精品一区二区在线观看完整版 | 特黄特级高清免费视频毛片 | 操女b | 国产一区二区精品久久 | 忘忧草高清| 美女被草漫画 | 国产精视频 | 人配人种视频xxxx | 青青在线香蕉国产精品 | 特级淫片欧美高清视频蜜桃 | 隔壁老王国产精品福利 | 免费一看一级毛片人 | 耽美肉文高h| 国产91精选在线观看麻豆 | 人人人人看人人人做人人 | 美女机机对机机的视频(免费) | 亚洲精品综合网 | 美女牲交毛片一级视频 | 男人视频网站 | 美女黄金大片视频免费看 | 99人中文字幕亚洲区 | 国产大片线上免费观看 | 538免费精品视频搬运工 | 午夜精品久久久久 | 国产福利片在线 易阳 | 被教官揉了一晚上的奶小说 | 4虎影院永久地址www | 闺蜜的样子小说安沁在线阅读 | 欧美午夜寂寞影院安卓列表 | 国产成人高清精品免费5388密 | 免费观看a毛片一区二区不卡 | 99精品免费视频 | 久久久久久久伊人电影 | 四虎成人免费观看在线网址 |