知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
關于正則表達式中的.*,.*?,.+?的理解
發(fā)表時間:2019-7-5
發(fā)布人:葵宇科技
瀏覽次數(shù):224
1. .*
.
表示 匹配除換行符 \n 之外的任何單字符,*
表示零次或多次。所以.*
在一起就表示任意字符出現(xià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. .*?
?
跟在*或者+后邊用時,表示懶惰模式。也稱非貪婪模式。就是匹配盡可能少的字符。就意味著匹配任意數(shù)量的重復,但是在能使整個匹配成功的前提下使用最少的重復。
a.*?b
匹配最短的,以a開始,以b結束的字符串。如果把它應用于aabab
的話,它會匹配aab
(第一到第三個字符)和ab
(第四到第五個字符)。
又比如模式 src=`.*?`,它將會匹配 src=` 開始,以 ` 結束的盡可能短的字符串。且開始和結束中間可以沒有字符,因為*表示零到多個。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時,將會返回 src=``。
3. .+?
同上,?
跟在*或者+后邊用時,表示懶惰模式。也稱非貪婪模式。就意味著匹配任意數(shù)量的重復,但是在能使整個匹配成功的前提下使用最少的重復。
a.+?b
匹配最短的,以a開始,以b結束的字符串,但a和b中間至少要有一個字符。如果把它應用于ababccaab
的話,它會匹配abab
(第一到第四個字符)和aab
(第七到第九個字符)。注意此時匹配結果不是ab
,ab
和aab
。因為a和b中間至少要有一個字符。
又比如模式 src=`.+?`,它將會匹配 src=` 開始,以 ` 結束的盡可能短的字符串。且開始和結束中間必須有字符,因為+表示1到多個。用它來搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 時,將會返回 src=``test.jpg`。注意與.*?
時的區(qū)別,此時不會匹配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("根據(jù)pattern1匹配的結果:");
if (m1.find()) {
for(int i=0; i<=m1.groupCount(); i++){
System.out.println(m1.group(i));
}
}
System.out.println("根據(jù)pattern2匹配的結果:");
if (m2.find()) {
for(int i=0; i<=m2.groupCount(); i++){
System.out.println(m2.group(i));
}
}
System.out.println("根據(jù)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("根據(jù)pattern1切分的結果");
for (int i=0; i< str1.length; i++) {
System.out.println(str1[i]);
}
System.out.println("根據(jù)pattern2切分的結果");
for (int i=0; i< str2.length; i++) {
System.out.println(str2[i]);
}
System.out.println("根據(jù)pattern3切分的結果");
for (int i=0; i< str3.length; i++) {
System.out.println(str3[i]);
}
}
}
5. 示例結果
相關案例查看更多
相關閱讀
- 網(wǎng)站沒排名
- 云南小程序定制
- 網(wǎng)站建設價格
- 國內知名網(wǎng)站建設公司排名
- 云南網(wǎng)絡營銷
- 網(wǎng)站制作
- 英文網(wǎng)站建設公司
- 網(wǎng)站建設快速優(yōu)化
- 網(wǎng)站搭建
- 云南網(wǎng)站建設
- 云南網(wǎng)站建設百度
- 云南網(wǎng)站建設案例
- 小程序開發(fā)平臺前十名
- 網(wǎng)站建設選
- 網(wǎng)站排名優(yōu)化
- 小程序開發(fā)
- 小程序模板開發(fā)公司
- 云南網(wǎng)站建設外包
- 手機網(wǎng)站建設
- 汽車報廢回收
- 表單
- 支付寶小程序被騙
- 云南網(wǎng)站建設方案 doc
- 用戶登錄
- 云南網(wǎng)站建設列表網(wǎng)
- 云南小程序開發(fā)報價
- 云南網(wǎng)站建設專業(yè)品牌
- 云南網(wǎng)站建設哪家強
- 百度快速排名
- 昆明網(wǎng)站開發(fā)