notepad++ 正则表达式交换两个值
Posted
技术标签:
【中文标题】notepad++ 正则表达式交换两个值【英文标题】:notepad++ reg expressions to swap two values 【发布时间】:2022-01-19 22:06:08 【问题描述】:我正在尝试使用正则表达式交换记事本++ 中的纬度和经度值。我试图在网上搜索一些指南,但我不明白该怎么做。我有一个文件,其中有:“经度,纬度”,我想在每一行中获取:“纬度,经度”
示例(两行):
12.5164654350527,41.8919188281474
12.5164650441393,41.891919097598
becomes
41.8919188281474,12.5164654350527
41.891919097598,12.5164650441393
我必须使用哪个正则表达式?
【问题讨论】:
你试过什么?我会给你一些提示:1)找出如何匹配一个数字和小数。 2)使用捕获组 【参考方案1】:尝试以下正则表达式:
(\d+\.\d+),(\d+\.\d+)
并将其替换为:
\2,\1
【讨论】:
【参考方案2】:找到什么:
^([0-9]*\.[0-9]*),([0-9]*\.[0-9]*)$
替换为:
\2,\1
另外,搜索模式应该设置为正则表达式
编辑:按照 cmets 中的建议转义 .
。
【讨论】:
你需要转义.
好点。它确实在没有转义点的情况下工作,但最好让它转义。
会无意中匹配.,.
- 不过,不确定是否有一个 100% 有用的解决方案,而不会使 RE 变得不必要地复杂。需要来自 OP 的更多信息...
将*
s 更改为+
会有所帮助。但如果数据集中有麻烦的记录,如果 OP 将它们添加到示例中,我很乐意进一步修改我的答案。【参考方案3】:
搜索:
([0-9]+(\.[0-9]+)?),([0-9]+(\.[0-9]+)?)
替换为:
\2,\1
这会捕获像1
、1.1
这样的数字,但不会捕获1.
或.5
。我以前的正则表达式([0-9]+.?[0-9]*),([0-9]+.?[0-9]*)
将允许1.
。
【讨论】:
别忘了转义.
,注意这也匹配1.,2.
!
但它与.1,.2
不匹配...不确定是否保证前导零 - OP 的问题对细节有点轻。
您知道如果您对以前的正则表达式不满意,您可以替换它,对吧? :)
@Robin,我知道,我是故意离开的。如果我不这样做,上面的 cmets 将没有任何意义,并且可能会产生误导。
@g_a_kowalski:我认为这里的情况很清楚,所以你不必担心。我通常会发现那些乍一看核心内容很明显的帖子(更多this spirit?)通常会获得更多曝光,但我可能会花太多时间考虑格式化。做你想做的事,已经为你投票了:)【参考方案4】:
确保将光标放在文件的开头。
-
点击
CTRL+H
。
选择Replace
标签。
选择底部的Regular Expression
。
查找: ([\d.]+),([\d.]+)
替换: \2,\1
【讨论】:
以上是关于notepad++ 正则表达式交换两个值的主要内容,如果未能解决你的问题,请参考以下文章
利用notepad++正则表达式将 多个空格 替换为一个逗号