2014-07-04 228 views
-5

所以如果我有一個字符串 randomwordabcrandomwordsxyzrandomwords並且想要提取abcrandomwordsxyz這將如何實現,abc和xyz是常量。我對python很陌生,所以任何簡單的東西都會非常感激。提取字符串的一部分

回答

3

怎麼樣使用正則表達式:

一個辦法:

>>> import re 
>>> s = 'randomwordabcrandomwordsxyzrandomwords' 
>>> m = re.search('(abc.*?xyz)', s) 
>>> m.group() 
'abcrandomwordsxyz' 
>>> 

或者:

>>> re.findall('abc.*?xyz', s) 
['abcrandomwordsxyz'] 
>>> 

如果你已經多次 'XYZ',那麼它會匹配到的第一個。 (非貪婪匹配)

最後一個是不是一個好辦法,但只是一種選擇:

>>> s[s.rfind('abc'):s.rfind('xyz')+3] 
'abcrandomwordsxyz' 
>>> 
1

這裏是你的答案:

import re 

mystring = 'randomwordabcrandomwordsxyzrandomwords' 
result = "" 

regex = re.match(r'.*?(abc.*?xyz).*?$',mystring) 

if regex: 
    result = regex.group(1) 

print result