Python有不同的结果

时间:2016-02-04 21:31:06

标签: python regex

我正在使用regex101.com来测试正则表达式中的字符串。

我在网站上使用的代码是:

Regular expression = nv[_](.*)[_]

Test string http://www.imdb.com/chart/top?ref_=nv_mv_250_6

在我的python中,当我使用建议的代码而不是mv_250时,我有nv_mv_250 _

网站建议的代码是

import re
p = re.compile(ur'nv[_](.*)[_]')
test_str = u"http://www.imdb.com/chart/top?ref_=nv_mv_250_6"

re.search(p, test_str)

为什么结果不同?

2 个答案:

答案 0 :(得分:1)

您需要的值是子匹配,即第一个捕获组的内容。通过 <SharePoint:SPNavigationManager id="QuickLaunchNavigationManager" runat="server" QuickLaunchControlId="V4QuickLaunchMenu" ContainedControl="QuickLaunch" EnableViewState="false" > <SharePoint:DelegateControl runat="server" ControlId="QuickLaunchDataSource"> <Template_Controls> <asp:SiteMapDataSource SiteMapProvider="SPNavigationProvider" ShowStartingNode="False" id="QuickLaunchSiteMap" StartingNodeUrl="sid:1025" runat="server" /> </Template_Controls> </SharePoint:DelegateControl> <SharePoint:AspMenu id="V4QuickLaunchMenu" runat="server" EnableViewState="false" DataSourceId="QuickLaunchSiteMap" UseSimpleRendering="true" Orientation="Vertical" StaticDisplayLevels="3" AdjustForShowStartingNode="true" MaximumDynamicDisplayLevels="0" SkipLinkText="" /> </SharePoint:SPNavigationManager>

访问它
.group(1)

请参阅Starter Master Pages

此外,在访问此子匹配之前,首先检查是否找到匹配项是个好主意。

或者,您可以使用import re p = re.compile(ur'nv[_](.*)[_]') test_str = u"http://www.imdb.com/chart/top?ref_=nv_mv_250_6" m = re.search(p, test_str) if m: print(m.group(1)) 返回结果列表,因为它只返回子匹配(=捕获的子串)。

答案 1 :(得分:0)

non-capturing groupfindall()一起使用。

import re
p = re.compile('(?:nv_)(.*)(?:_)')
test_str = u"http://www.imdb.com/chart/top?ref_=nv_mv_250_6"

for item in re.findall(p, test_str):
    print item