提取特定字符之间的子字符串

时间:2016-06-18 14:41:36

标签: python regex

我有一些字符串:

false

我想摆脱'\ i {}','\ io {}'字符,以便我可以得到:

\i{}Agrostis\i0{} <L.>

我尝试过以下代码(改编自here):

Agrostis <L.>

它的作用部分,因为当我运行它时,我得到:

m = re.search('\i{}(.+?)\i0', item_name)
if m:
   name = m.group(1).strip('\\')
else:
   name = item_name

没有

Agrostis

部分(我想保留)。

任何提示?

提前感谢您提供的任何帮助!

5 个答案:

答案 0 :(得分:2)

使用s.replace('\i{}', '')s.replace('\io{}', '')

答案 1 :(得分:1)

你可以用不同的方式做到这一点。

最简单的方法是使用str.replace

s = '''\i{}Agrostis\i0{} <L.>'''
s2 = s.replace('''\i{}''', '').replace('''\i0{}''', '')

另一种方法是使用re.sub()

答案 2 :(得分:1)

您需要使用re.sub功能。

In [34]: import re

In [35]: s = "\i{}Agrostis\i0{} <L.>"

In [36]: re.sub(r'\\i\d*{}', '', s)
Out[36]: 'Agrostis <L.>'

答案 3 :(得分:1)

您可以使用字符类以及re.sub()

import re
regex = r'\\i[\d{}]+'
string = "\i{}Agrostis\i0{} <L.>"

string = re.sub(regex, '', string)
print string

请参阅a demo on ideone.com

答案 4 :(得分:0)

您可以使用s.replace('\i{}', '')s.replace('\io{}', ''),如Julien所说,或者继续使用正则表达式方法,将您的模式更改为:

re.search('\i{}(.+?)\i0(.++)', item_name)

并使用m.group(1).strip('\\') + m.group(2).strip('\\')作为结果。