2014-03-26 55 views
1

我有一個字符串,其中包含一個子字符串與下一個格式: 它開始於i_o_前綴,並以,逗號結束逗號。子字符串提取與特定格式

我該如何提取這樣的字符串?

例如:

string = 'input [89:0]  i_gth_rxdata,' 

我需要i_gth_rxdata

回答

0
In [6]: import re 

In [7]: text = 'input [89:0] i_gth_rxdata,' 

In [9]: re.search(r'([io]_.*),', text).group(1) 
Out[9]: 'i_gth_rxdata' 

.*會貪婪地匹配,直到找到最後逗號。如果您希望圖案匹配,直到找到第一個逗號,請使用 r'([io]_.*?),'

下面是一個例子,顯示了差異:

In [15]: re.search(r'([io]_.*),', 'input [89:0] i_gth_rxdata, 1,').group(1) 
Out[15]: 'i_gth_rxdata, 1' 

In [16]: re.search(r'([io]_.*?),', 'input [89:0] i_gth_rxdata, 1,').group(1) 
Out[16]: 'i_gth_rxdata' 
4
my_string = 'input [89:0]  i_gth_rxdata,' 
import re 
print re.findall(r'[io]_.*?(?=,)', my_string) 
# ['i_gth_rxdata'] 

您可以看到該正則表達式的作品,in this online demo

[io]_.*?(?=,) 

Regular expression visualization

Debuggex Demo

0
>>> s = 'input [89:0] i_gth_rxdata,' 
>>> import re 
>>> obj = re.search(r'(i_|o_).*,', s) 
>>> obj.group() 
'i_gth_rxdata,'