0
我有一個特殊的編碼格式,我想要一個提取編碼信息的正則表達式。我有':'作爲分隔不同「塊」信息的特殊字符。例如:正則表達式匹配,獲取由分隔符標記分隔的所有組?
s = 'P:1:a:3:test_data'
應該得到斯普利特:
['P','1','a','3','test_data']
我可以使用:
s.split(':')
不過,我可以有一個 ':' 被編碼以及(會有永遠不會超過1':'組合在一起,所以沒有歧義)。因此,例如:
s = 'P:1:::3:test_data'
應該給:
['P','1',':','3','test_data']
採用分體式( ':')未能在這裏:
['P', '1', '', '', '3', 'test_data']
什麼是捕捉的最佳途徑 ':'?我用正則表達式不是很強大,我知道正則表達式組可以使用'* +'匹配至少一個字符,但是我很困惑如何將它們拼湊在一起。更好的是,沒有正則表達式,還有更好的方法嗎?我想我總是可以迭代數組,檢查連續的空字符串並將它們合併爲':'。有沒有更優雅的做法呢?
感謝
應將'P:1 ::::: 3:test_data'分成多少個? 'P,1,:,:,3,test_data'或'P,1,:::,3,test_data'? – Psidom
你可以用group來正則表達式,我試過[這個正則表達式](https://regex101.com/r/pKIqak/1),它可以工作。 –
@Psidom根據我正在使用的數據類型,這絕不會發生。這就是說,'P,1,:,3,test_data'是正確的行爲。 –