我有一個字符串,其中包含一個子字符串與下一個格式: 它開始於i_
或o_
前綴,並以,
逗號結束逗號。子字符串提取與特定格式
我該如何提取這樣的字符串?
例如:
string = 'input [89:0] i_gth_rxdata,'
我需要i_gth_rxdata
我有一個字符串,其中包含一個子字符串與下一個格式: 它開始於i_
或o_
前綴,並以,
逗號結束逗號。子字符串提取與特定格式
我該如何提取這樣的字符串?
例如:
string = 'input [89:0] i_gth_rxdata,'
我需要i_gth_rxdata
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'
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]_.*?(?=,)
>>> s = 'input [89:0] i_gth_rxdata,'
>>> import re
>>> obj = re.search(r'(i_|o_).*,', s)
>>> obj.group()
'i_gth_rxdata,'