当前位置:编程学习 > JAVA >>

JAVA正则中的“?”的使用

最近在做一个正则匹配的东西
但是在用JAVA正则的时候,沿用了之前的人的写法
比如匹配如下的一段html代码,要一次遍历所有的<li></li>
<ul>
<li><label>描述相符</label>4.7 
<em class="green">低于同行0.83%</em>
</li>
<li><label>服务态度</label>4.8 
<em class="green">低于同行0.63%</em>
</li>
<li><label>发货速度</label>4.7
<em class="green">低于同行0.99%</em>
</li>
</ul>


之前的人用的是:<li>.*?</li>

JAVA代码如下:
String bran = "<li>.*?</li>";
Pattern patt = Pattern.compile(bran);
Matcher mat = patt.matcher(brands);
while(mat.find()){
String brandstr = mat.group();
System.out.println(brandstr);
}


可以打印以下结果:
<li><label>描述相符</label>4.7  <em class="green">低于同行0.83%</em> </li>
<li><label>服务态度</label>4.8 <em class="green">低于同行0.63%</em></li>
<li><label>发货速度</label>4.7<em class="green">低于同行0.99%</em></li>


只是一直不理解‘?’在这里的含义,看来很多文档,似乎在这里解释不通。
特想请教各位,能否给小弟一些解释....... Java 正则 --------------------编程问答-------------------- 你理解错了,这里是这样 。 *?后两个是一起的,叫*非贪婪写法。.你应该懂了,*?遇到下个</li>就会作为一个,然后再找<li></li>这间的,这样用处是分开得到三个<li></li>,不加?从头到尾就一个了 --------------------编程问答-------------------- 在正则表达式里
 “*”是0到n次的意思  “?”是0到一次。
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,