2017-11-11 137 views
-1

我的目标是捕获来自以下字符串日期:如何匹配捕获组1的正则表达式

<span class="ui_bubble_rating bubble_50"></span><span class="ratingDate relativeDate" title="November 9, 2017">Reviewed 2 days ago </span><a class="viaMobile" href="/apps" target="_blank" onclick="ta.util.cookie.setPIDCookie(24487)"><span class="ui_icon mobile-phone"></span>via mobile </a>

要做到这一点我使用正则表达式:title="(*?)" 它返回匹配(组0):title="November 9, 2017"组1:November 9, 2017

我需要我的匹配返回正则表达式只是日期,什么是当前组1。有没有一种简单的方法来做到这一点?我是新来的正则表达式,但我可以在这个网上找到方向。

注意:我不会为日期的结构编写正则表达式,因为某些字符串有多个日期,我只希望标题中的日期。谢谢!

+1

您使用哪种语言?这将决定你如何获得捕获组。 – user184994

+0

猜测:您正在使用Java,然后查看[文档](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#group(int)): “...零组表示整个模式...” – alfasin

+0

我正在使用Python。我想知道是否有可能在正则表达式中做到这一点。实施是否要求使用任何相关的母语? – hackerman

回答

0

您可以使用负前瞻/回顾后,而不是捕捉组

(?<=title=\").+?(?=") 

这将确保它的标题开始,而实际上没有选择它

0

您可以使用re.findall

import re 
s = """ 
    <span class="ui_bubble_rating bubble_50"></span><span class="ratingDate relativeDate" title="November 9, 2017">Reviewed 2 days ago </span><a class="viaMobile" href="/apps" target="_blank" onclick="ta.util.cookie.setPIDCookie(24487)"><span class="ui_icon mobile-phone"></span>via mobile </a> 
    """ 
date = re.findall('title="(.*?)"', s)[0] 

输出:

'November 9, 2017' 
相关问题