查找/替换正则表达式以重新排列Notepad ++中的文本 看到它正常工作

我有一些要重新排列的数据(全部在同一行上),我尝试了多种方法,但无法正常工作。

以下是文本示例:

DATA1="8DE" DATA2="322" DATA3="20" DATA4="19.99" DATA5="0.01"
DATA1="FE4" DATA2="222" DATA4="400" DATA3="400" DATA5="0.00"
DATA1="CE3" DATA2="444" DATA4="60" DATA5="0.00" DATA3="60"
DATA1="MME" DATA3="20" DATA4="20" DATA5="0.00"
DATA2="667" DATA4="30" DATA3="30" DATA5="0.00" DATA1="MH4"

这应该是输出:

8DE     322     20      19.99   0.01
FE4     222     400     400     0.00
CE3     444     60      60      0.00
MME             20      20      0.00
MH4     667     30      30      0.00

我尝试了以下操作,但无济于事:

查找:DATA1=\"(.*?)\"|DATA2=\"(.*?)\"|DATA3=\"(.*?)\"|DATA4=\"(.*?)\"|DATA5=\"(.*?)\"

替换:\1 \2 \3 \4 \5

查找:DATA1=\"(?<d1>.*?)\"|DATA2=\"(?<d2>.*?)\"|DATA3=\"(?<d3>.*?)\"|DATA4=\"(?<d4>.*?)\"|DATA5=\"(?<d5>.*?)\"

替换:$+{d1} $+{d2} $+{d3} $+{d4} $+{d5}

如果有人可以帮助或指导我找到正确的答案,我会感到很高兴(对任何误解深感抱歉,因为英语不是我的第一本英语)

comeonace 回答:查找/替换正则表达式以重新排列Notepad ++中的文本 看到它正常工作

正则表达式

^(?=.*\bDATA1="([^"]+)"\h*)?(?=.*\bDATA2="([^"]+)"\h*)?(?=.*\bDATA3="([^"]+)"\h*)?(?=.*\bDATA4="([^"]+)"\h*)?(?=.*\bDATA5="([^"]+)"\h*)?.*

此正则表达式的工作方式是使用可选的先行查找DATAx(其中x是数字)并将"内部的值捕获到捕获组中,然后匹配整行(以便替换它。)

替换

$1\t\t$2\t\t$3\t\t$4\t\t$5

此替换仅引用捕获组,并在捕获组之间添加制表符,同时按DATA [1,2,3,4,5]的顺序对其进行重新排序。

结果

8DE     322     20      19.99       0.01
FE4     222     400     400     0.00
CE3     444     60      60      0.00
MME             20      20      0.00
MH4     667     30      30      0.00

看到它正常工作

See the regex in use here

本文链接:https://www.f2er.com/3156866.html

大家都在问