2014-07-04 168 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