首页 新闻 会员 周边

正则中的<?>的作用

0
悬赏园豆:10 [已解决问题] 解决于 2010-02-27 22:40

我的目的是想找到文本中所有的链接文本。

假设文本内容为:

<a href="#">link1</a>other content <a >link2</a>

分别使用如下正则表达式:

1.   >.*<   得到的结果是  >link1</a>other content <a >link2<,能理解;

2.   >.*?<  得到的结果居然就是   >link1<  、>other content <   和 >link2<  ,这个“?”在这里起到了什么样的作用呢?

3.  >(.*)?< 我又加了一对括号,得到的结果和 “1”相同;

我又试了其他一个正则:

^\w+     匹配第一个单词, 如果加上一个“?号”,

^\w+?   就只能匹配第一个字母了……

 

对这个?的使用彻底迷糊了~~~~~~~~~

 

 

问题补充: 我查到了一点, 是不是和“贪婪模式”有关?
自由飞的主页 自由飞 | 初学一级 | 园豆:174
提问于:2010-02-27 16:02
< >
分享
最佳答案
0

在.*或.+后的?表示采用非贪婪模式匹配,即>和<之间的.字符会尽可能少。

实力字符串:<a href="#">link1</a>other content <a >link2</a>

按正则表达式>.*<贪婪匹配,则结果为: >link1</a>other content <a >link2<;

按正则表达式>.*?<非贪婪匹配,则结果为: >link1<、>other content <、 >link2<;

收获园豆:10
yisx | 菜鸟二级 |园豆:232 | 2010-02-27 18:05
其他回答(1)
0

?表示0-1次重复

\w+表示数字字母 ,

\w+?如果存在就是取数字字母第一个

回忆过去 | 园豆:329 (菜鸟二级) | 2010-02-27 16:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册