java pattern 正则表达式中的 '+?' 和 '*?' 分别是什么意思
我知道+表示1个到多个*表示0到多个?表示0或者1个但经常看到+?*?这么用,比如:查询<ahref=\"index.html\">index</a>中<ahref></...
我知道
+ 表示 1个到多个
* 表示 0到多个
? 表示0或者1个
但经常看到 +? *? 这么用,比如:
查询
<a
href=\"index.html\">index</a>中
<a
href></a>间的数据,
可写作<a.*href=\".*\">(.+?)</a>
这里小括号提取的内容数量就是用 +? 表示的
这个是什么意思啊, 用 (.+) 匹配 index 难道不能匹配么,只能用 (.+?) 么? 展开
+ 表示 1个到多个
* 表示 0到多个
? 表示0或者1个
但经常看到 +? *? 这么用,比如:
查询
<a
href=\"index.html\">index</a>中
<a
href></a>间的数据,
可写作<a.*href=\".*\">(.+?)</a>
这里小括号提取的内容数量就是用 +? 表示的
这个是什么意思啊, 用 (.+) 匹配 index 难道不能匹配么,只能用 (.+?) 么? 展开
2个回答
展开全部
普通的+,*表示 尽可能多的匹配
+?,*?多了个问号表示 尽可能 少的匹配
你举的那个例子无论 用什么 结果都 是一样的,假如有以下一行
<a href=\"index.html\">index</a><a href=\"chapter1.html\">chapter1</a>
如果 用<a.*href=\".*\">(.+?)</a>小括号会匹配第二个a href标签里的chapter1
因为a.*href中.*会一直匹配 到 第二个href前面
如果 用<a.*?href=\".*\">(.+)</a>小括号则会匹配 从index到chapter1的所有字符 ,即(.+)从第一个<a href ...>结束 匹配 到 在同一行的最后 一个</a>前面
+?,*?多了个问号表示 尽可能 少的匹配
你举的那个例子无论 用什么 结果都 是一样的,假如有以下一行
<a href=\"index.html\">index</a><a href=\"chapter1.html\">chapter1</a>
如果 用<a.*href=\".*\">(.+?)</a>小括号会匹配第二个a href标签里的chapter1
因为a.*href中.*会一直匹配 到 第二个href前面
如果 用<a.*?href=\".*\">(.+)</a>小括号则会匹配 从index到chapter1的所有字符 ,即(.+)从第一个<a href ...>结束 匹配 到 在同一行的最后 一个</a>前面
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询