2016-10-05 170 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

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