濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 解析正則表達(dá)式中的.*,.*?,.+?的含義

解析正則表達(dá)式中的.*,.*?,.+?的含義

熱門(mén)標(biāo)簽:梅縣地圖標(biāo)注 貴港公司如何申請(qǐng)400電話 ai電話機(jī)器人搭建 西藏智能外呼系統(tǒng)代理商 400電話辦理電話辦理 外呼系統(tǒng)無(wú)呼出路由是什么原因 地圖標(biāo)注教學(xué)點(diǎn) 呼叫系統(tǒng)外呼只能兩次 甘肅醫(yī)療外呼系統(tǒng)排名

1. .*

. 表示匹配除換行符 \n 之外的任何單字符,*表示零次或多次。所以.*在一起就表示任意字符出現(xiàn)零次或多次。沒(méi)有?表示貪婪模式。比如a.*b,它將會(huì)匹配最長(zhǎng)的以a開(kāi)始,以b結(jié)束的字符串。如果用它來(lái)搜索aabab的話,它會(huì)匹配整個(gè)字符串aabab。這被稱為貪婪匹配。
又比如模式src=`.*`, 它將會(huì)匹配最長(zhǎng)的以 src=` 開(kāi)始,以`結(jié)束的最長(zhǎng)的字符串。用它來(lái)搜索 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開(kāi)始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會(huì)匹配aab(第一到第三個(gè)字符)和ab(第四到第五個(gè)字符)。
又比如模式 src=`.*?`,它將會(huì)匹配 src=` 開(kāi)始,以 ` 結(jié)束的盡可能短的字符串。且開(kāi)始和結(jié)束中間可以沒(méi)有字符,因?yàn)?表示零到多個(gè)。用它來(lái)搜索 img src=``test.jpg` width=`60px` height=`80px`/> 時(shí),將會(huì)返回 src=``。

3. .+?

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

總結(jié)

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

您可能感興趣的文章:
  • 正則表達(dá)式中的 .*? 或 .*+ 的意思

標(biāo)簽:哈密 常州 本溪 湖州 泰安 涼山 大興安嶺 ???/a>

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解析正則表達(dá)式中的.*,.*?,.+?的含義》,本文關(guān)鍵詞  解析,正則,表達(dá)式,中的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解析正則表達(dá)式中的.*,.*?,.+?的含義》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于解析正則表達(dá)式中的.*,.*?,.+?的含義的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    汶川县| 金沙县| 水富县| 南漳县| 双桥区| 罗城| 米林县| 芷江| 乐山市| 连州市| 苍山县| 桐柏县| 临西县| 广宁县| 墨江| 西宁市| 富锦市| 赤水市| 海门市| 荔波县| 清镇市| 陵水| 宜兰县| 左权县| 新乐市| 珲春市| 平湖市| 嘉兴市| 绥滨县| 东港市| 温宿县| 呼伦贝尔市| 松原市| 武山县| 新宁县| 玉山县| 阿荣旗| 阳谷县| 祁东县| 健康| 教育|