2017-07-27 33 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