2017-07-27 78 views
0

我有一個包含重複的代碼像這樣的一個文件,我只是想交換文本

交換卷/列? (?怎麼說)的Y和Z,每個數字在這裏沒有在這裏不同的是,相同數量的

例子:

xxxx,xxxx,yyyy,xxxx,xxxx,zzzz:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,yyyy,xxxx,xxxx,zzzz:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,yyyy,xxxx,xxxx,zzzz:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,yyyy,xxxx,xxxx,zzzz:xxxx:xxxx:xxxx:xxxx: 

分爲:

xxxx,xxxx,zzzz,xxxx,xxxx,yyyy:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,zzzz,xxxx,xxxx,yyyy:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,zzzz,xxxx,xxxx,yyyy:xxxx:xxxx:xxxx:xxxx: 
xxxx,xxxx,zzzz,xxxx,xxxx,yyyy:xxxx:xxxx:xxxx:xxxx: 

X,Y,Z =不同數目

抱歉解釋差

示例

36,192,72004,128,0,71923:0:0:0:0: 
256,192,72014,128,0,71843:0:0:0:0: 
475,192,72204,128,0,71923:0:0:0:0: 

36,192,71923,128,0,72004:0:0:0:0: 
256,192,71843,128,0,72014:0:0:0:0: 
475,192,71923,128,0,72204:0:0:0:0: 
+0

您可以使用正則表達式查找和替換這一點。假設所有的x代表不同的數字,唯一能夠固定搜索的是逗號和冒號。替換如'/([^,] *,)([^,] *)/'將在第二組中匹配「yyyy」。 – jpaugh

+0

@jpaugh我是新來的。感謝您的幫助,但我不知道如何使用正則表達式。我只知道如何在editplus/notepad ++中使用ctrl + h。 – KenZync

+0

Notepad ++支持[regexs](https://en.wikipedia.org/wiki/Regex),這就是我提到它的原因。如果您經常遇到此類問題,我建議您學習。你可以在幾個下午通過閱讀並在你的編輯器中嘗試一些東西來學習它們。 – jpaugh

回答

1

他應該做的工作(在記事本++):

  • 按Ctrl + ^h
  • 查找內容:^((?:[^,]+,){2})(\d+),((?:[^,]+,){2})(\d+)
  • 替換:$1$4,$3$2
  • 更換所有

說明:

^   : start of line 
(   : start group 1 
    (?:  : start non capture group 
    [^,]+ : 1 or more non comma 
    ,  : a comma 
){2}  : end group, must appear twice 
)   : end group 1 
(\d+)  : group 2, 1 or more digits 
,   : a comma 
(   : start group 3 
    (?:  : start non capture group 
    [^,]+ : 1 or more non comma 
    ,  : a comma 
){2}  : end group, must appear twice 
)   : end group 3 
(\d+)  : group 4, 1 or more digits 

更換:

$1$4,$3$2 : group 1 group 4 comma group 3 group 4 
+0

這是否可以在Notepad ++,EditPlus或其他編輯器中使用? – jpaugh

+0

謝謝它的工作! Notepadd ++搜索模式:正則表達式 /RegExr也適用於此代碼!非常感謝! btw誰是downvote我的問題大聲笑?這將幫助我很多事情在我的一天 – KenZync

+0

@KenZync:不客氣,很高興它有幫助。 – Toto