2014-10-31 67 views
0

我有一個字符串Python提取子串的正則表達式

" request.addParameter('page','/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag','N','',true,false); "

我想提取部分

" '/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag' "

出這個字符串。我嘗試了幾種正則表達式的組合(在Python中使用re模塊),但無法找到確切的所需模式,它使主串中的子串不存在。

+1

你能不能把這些組合你嘗試進入你的問題的正則表達式? – Jerry 2014-10-31 06:59:31

+0

這個字符串總是以'/' – nu11p01n73R 2014-10-31 07:04:03

+0

開始pat = re.search(「\'\/[az] * [AZ] * [./+]」,string1) pat = re.search(「\' \(。+)\?(。\ w)「,string1) pat = re.search(」\'\ /(。+)?(。\ w *)「,string1) pat = re.search (「\'\ /(。+)?(。\ W *)」,string1) pat = re.search(「\'\ /(。+)?(\ w * \ d *)\'」, string1) pat = re.search(「\'\ /(。+)?(\ w * \ d *)\'[^,]」,string1) pat = re.search(「\'\ /( \ w +)?'「,string1) – harveyD 2014-10-31 07:04:07

回答

1
'([^']+)' 

您可以試試這個。

print re.findall(r"'([^']+)'",x)[1]

這裏x是你的字符串。基本上它是提取第二組。

查看演示。

http://regex101.com/r/yG7zB9/2

+0

爲什麼downvoted ??????????? // – vks 2014-10-31 07:04:34

+0

我沒有。事實上,你是一個明星。 – harveyD 2014-10-31 07:14:38

+0

@哈維很高興它工作:) – vks 2014-10-31 08:28:59

0

使用正則表達式

'\/[^']+' 

的代碼可以寫成

x=" request.addParameter('page','/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag','N','',true,false); ". 
re.findall(r"'\/[^']+'", x)" 
["'/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag'"] 

見正則表達式是如何工作的http://regex101.com/r/pK9mI8/1

你也可以用search功能來搜索並找到串匹配模式爲

re.search(r"'\/[^']+'", x).group() 
"'/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag'" 
0

好像你想是這樣的,

>>> import re 
>>> s = " request.addParameter('page','/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag','N','',true,false); " 
>>> re.search(r"'(/[^']*)'", s).group(1) 
'/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag' 
0

你沒有被強制使用regex你可以使用split()

>>> s.split(',')[1] 
"'/TMRMKUOHY/RPM/Store/srrreVkew.jsp?resODFlag'" 
+0

你是對的。斯普利特沒有打我。尼斯。 – harveyD 2014-10-31 07:19:26

+0

是的,爲了提取一個子字符串,你可以使用正則表達式就是其中之一的一些方法,所以如果你覺得這個答案有用,你可以通過投票來告訴這個社區, – Kasramvd 2014-10-31 07:21:40