婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解析正則表達式中的.*,.*?,.+?的含義

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

熱門標簽:梅縣地圖標注 貴港公司如何申請400電話 ai電話機器人搭建 西藏智能外呼系統代理商 400電話辦理電話辦理 外呼系統無呼出路由是什么原因 地圖標注教學點 呼叫系統外呼只能兩次 甘肅醫療外呼系統排名

1. .*

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

2. .*?

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

3. .+?

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

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("根據pattern1匹配的結果:");
 if (m1.find()) {
 for(int i=0; i=m1.groupCount(); i++){
 System.out.println(m1.group(i));
 }
 }

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

 System.out.println("根據pattern3匹配的結果:");
 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("根據pattern1切分的結果");
 for (int i=0; i str1.length; i++) {
 System.out.println(str1[i]);
 }

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

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

5. 示例結果

總結

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

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

標簽:哈密 常州 本溪 湖州 泰安 涼山 大興安嶺 海口

巨人網絡通訊聲明:本文標題《解析正則表達式中的.*,.*?,.+?的含義》,本文關鍵詞  解析,正則,表達式,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解析正則表達式中的.*,.*?,.+?的含義》相關的同類信息!
  • 本頁收集關于解析正則表達式中的.*,.*?,.+?的含義的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 甘肃省| 吉木萨尔县| 平泉县| 江西省| 枞阳县| 上虞市| 马龙县| 英吉沙县| 公主岭市| 新乡县| 莫力| 黑河市| 邢台市| 策勒县| 册亨县| 溧阳市| 闻喜县| 南城县| 洛川县| 盈江县| 东方市| 聊城市| 镇宁| 称多县| 吉林省| 交口县| 云浮市| 乳山市| 武定县| 建始县| 铁岭市| 始兴县| 龙山县| 连山| 灵石县| 三穗县| 株洲县| 甘泉县| 遂溪县| 阿勒泰市| 通辽市|