免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

正則表達(dá)式中的.*,.*?,.+?的含義是什么

這篇文章將為大家詳細(xì)講解有關(guān)正則表達(dá)式中的.*,.*?,.+?的含義是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元元寶做網(wǎng)站,已為上家服務(wù),為元寶各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

1. .*

. 表示匹配除換行符 \n 之外的任何單字符,*表示零次或多次。所以.*在一起就表示任意字符出現(xiàn)零次或多次。沒有?表示貪婪模式。比如a.*b,它將會(huì)匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會(huì)匹配整個(gè)字符串aabab。這被稱為貪婪匹配。
又比如模式src=`.*`, 它將會(huì)匹配最長的以 src=`開始,以`結(jié)束的最長的字符串。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/>時(shí),將會(huì)返回 src=``test.jpg` width=`60px` height=`80px`

2. .*?

?跟在*或者+后邊用時(shí),表示懶惰模式。也稱非貪婪模式。就是匹配盡可能少的字符。就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。
a.*?b匹配最短的,以a開始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會(huì)匹配aab(第一到第三個(gè)字符)和ab(第四到第五個(gè)字符)。
又比如模式 src=`.*?`,它將會(huì)匹配 src=`開始,以 ` 結(jié)束的盡可能短的字符串。且開始和結(jié)束中間可以沒有字符,因?yàn)?表示零到多個(gè)。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時(shí),將會(huì)返回 src=``

3. .+?

同上,?跟在*或者+后邊用時(shí),表示懶惰模式。也稱非貪婪模式。就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。
a.+?b匹配最短的,以a開始,以b結(jié)束的字符串,但a和b中間至少要有一個(gè)字符。如果把它應(yīng)用于ababccaab的話,它會(huì)匹配abab(第一到第四個(gè)字符)和aab(第七到第九個(gè)字符)。注意此時(shí)匹配結(jié)果不是ab,abaab。因?yàn)閍和b中間至少要有一個(gè)字符。
又比如模式 src=`.+?`,它將會(huì)匹配 src=`開始,以 ` 結(jié)束的盡可能短的字符串。且開始和結(jié)束中間必須有字符,因?yàn)?表示1到多個(gè)。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/>時(shí),將會(huì)返回 src=``test.jpg`。注意與.*?時(shí)的區(qū)別,此時(shí)不會(huì)匹配src=``,因?yàn)?strong>src=`和 `之間至少有一個(gè)字符。

4. 示例代碼

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.jupiter.api.Test;

public class TestRegx {

 @Test
 public void testRegx(){

 String str = "<img src=``test.jpg` width=`60px` height=`80px`/>";

 String pattern1 = "src=`.*`";
 String pattern2 = "src=`.*?`";
 String pattern3 = "src=`.+?`";

 Pattern p1 = Pattern.compile(pattern1);
 Pattern p2 = Pattern.compile(pattern2);
 Pattern p3 = Pattern.compile(pattern3);

 Matcher m1 = p1.matcher(str);
 Matcher m2 = p2.matcher(str);
 Matcher m3 = p3.matcher(str);

 System.out.println("根據(jù)pattern1匹配的結(jié)果:");
 if (m1.find()) {
 for(int i=0; i<=m1.groupCount(); i++){
 System.out.println(m1.group(i));
 }
 }

 System.out.println("根據(jù)pattern2匹配的結(jié)果:");
 if (m2.find()) {
 for(int i=0; i<=m2.groupCount(); i++){
 System.out.println(m2.group(i));
 }
 }

 System.out.println("根據(jù)pattern3匹配的結(jié)果:");
 if (m3.find()) {
 for(int i=0; i<=m3.groupCount(); i++){
 System.out.println(m3.group(i));
 }
 }

 String[] str1 = p1.split(str);
 String[] str2 = p2.split(str);
 String[] str3 = p3.split(str);

 System.out.println("根據(jù)pattern1切分的結(jié)果");
 for (int i=0; i< str1.length; i++) {
 System.out.println(str1[i]);
 }

 System.out.println("根據(jù)pattern2切分的結(jié)果");
 for (int i=0; i< str2.length; i++) {
 System.out.println(str2[i]);
 }

 System.out.println("根據(jù)pattern3切分的結(jié)果");
 for (int i=0; i< str3.length; i++) {
 System.out.println(str3[i]);
 }
 }
}

5. 示例結(jié)果

正則表達(dá)式中的.*,.*?,.+?的含義是什么

關(guān)于“正則表達(dá)式中的.*,.*?,.+?的含義是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

文章標(biāo)題:正則表達(dá)式中的.*,.*?,.+?的含義是什么
本文來源:http://m.newbst.com/article20/gdcjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站微信公眾號靜態(tài)網(wǎng)站響應(yīng)式網(wǎng)站網(wǎng)站營銷品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)