2013-09-21 87 views
1

我有一個大包的包裹ID。這個數據庫的問題是 該模式是錯誤的。Can Regex可以在字符串中切換字符嗎?

0000-22N-6W-01 
should be written: 
0000-01-22N-6W 

Can Regex可以做一個開關,或者我需要看另一個python過程。

+1

是的,雖然正則表達式不是必需的*。將數據分解成若干部分(例如'str.split'或正則表達式中的* capture groups *),然後構建結果(例如,使用連接或正則表達式替換)。 – user2246674

+1

使用're.sub()'進行替換,並使用捕獲組。 – Barmar

回答

2

\1\4\2\3

import re 
input = raw_input() 
output = re.sub(r'^(.{4})(.{4})(.{3})(.{3})', r'\1\4\2\3', input) 
print output 

測試它here更換模式^(.{4})(.{4})(.{3})(.{3})

+0

第一種模式是^(。{4})(。{3})(。{3})(。{3})$? (。{3})(。{3})(。{3})$「,r」\ 1 \ 4 \ 3 \ 2「,vac)我仍然卡住了。 – George

+0

答案已經更新了代碼。 –

+0

我使用了您的原始輸入示例。這樣可行! – George

0

你也可以在純Python中做到這一點。味道的問題。

>>> data = "0000-22N-6W-01" 
>>> parts = data.split('-') 
>>> parts[1:] = parts[3], parts[1], parts[2] 
>>> new_data = '-'.join(parts) 
>>> new_data 
'0000-01-22N-6W' 
相關問題