2016-10-05 124 views
1
import re 

def test(stest): 
    pattern = re.compile(r'/product\/(.*?)/i') 

    result = pattern.match(stest) 
    if result: 
     print result.group() 
    else: 
     print "Doesn't match" 

test('product/WKSGGPC104/GGPC-The-Paladin') 

当我运行编码如上,我会得到“不匹配”的结果,而不是'产品/'。pattern.match与正则表达式不工作

有人可以帮我吗?我通过使用在线工具测试了正则表达式,它显示正确,并且匹配我要测试的字符串。

谢谢你的帮助。

+1

如果字符串总是以前缀'product'开始,那么只是忽略了正则表达式的开始/它应该很好地工作,否则如果它在字符串中的某处但始终不是开头,则使用re.search(),因为它会扫描整个字符串以匹配子字符串。 – Akhil

回答

1

几个问题与您的代码。
首先,在开始时没有/,第二,你所提供的修饰后拨:

import re 

def test(stest): 
    pattern = re.compile(r'product/([^/]+)'. re.IGNORECASE) 

    result = pattern.match(stest) 
    if result: 
     print(result.group()) 
    else: 
     print("Doesn't match") 

test('product/WKSGGPC104/GGPC-The-Paladin') 

a demo on regex101.com

+0

谢谢,伙计。它真的帮助我。 –

0

您正在使用字符串文字,但仍在字符串中跳过\。