【问题标题】:notepad++ reg expressions to swap two valuesnotepad++ 正则表达式交换两个值
【发布时间】:2014-06-08 11:49:12
【问题描述】:

我正在尝试使用正则表达式交换记事本++ 中的纬度和经度值。我试图在网上搜索一些指南,但我不明白该怎么做。我有一个文件,其中有:“经度,纬度”,我想在每一行中获取:“纬度,经度”

示例(两行):

   12.5164654350527,41.8919188281474
   12.5164650441393,41.891919097598

   becomes

   41.8919188281474,12.5164654350527
   41.891919097598,12.5164650441393

我必须使用哪个正则表达式?

【问题讨论】:

  • 你试过什么?我会给你一些提示:1)找出如何匹配一个数字和小数。 2)使用捕获组

标签: regex notepad++


【解决方案1】:

尝试以下正则表达式:

(\d+\.\d+),(\d+\.\d+)

并将其替换为:

\2,\1

【讨论】:

    【解决方案2】:

    搜索:

    ([0-9]+(\.[0-9]+)?),([0-9]+(\.[0-9]+)?)
    

    替换为:

    \2,\1
    

    这会捕获像11.1 这样的数字,但不会捕获1..5。我以前的正则表达式([0-9]+.?[0-9]*),([0-9]+.?[0-9]*) 将允许1.

    【讨论】:

    • 别忘了转义.,注意这也匹配1.,2.
    • 但它不匹配 .1,.2... 不确定是否保证前导零 - OP 的问题对细节有点轻。
    • 您知道如果您对以前的正则表达式不满意,您可以替换它,对吧? :)
    • @Robin,我知道,我是故意离开的。如果我不这样做,上面的 cmets 将没有任何意义,并且可能会产生误导。
    • @g_a_kowalski:我认为这里的情况很清楚,所以你不必担心。我通常会发现那些乍一看核心内容很明显的帖子(更多this spirit?)通常会获得更多曝光,但我可能会花太多时间考虑格式化。做你想做的事,已经为你投票了:)
    【解决方案3】:

    确保将光标放在文件的开头。

    1. 点击CTRL+H
    2. 选择Replace 标签。
    3. 选择底部的Regular Expression

      查找: ([\d.]+),([\d.]+)
      替换: \2,\1

    【讨论】:

      【解决方案4】:

      找到什么:

      ^([0-9]*\.[0-9]*),([0-9]*\.[0-9]*)$
      

      替换为:

      \2,\1
      

      另外,搜索模式应该设置为正则表达式

      编辑:按照 cmets 中的建议转义 .

      【讨论】:

      • 你需要转义.
      • 好点。它确实在没有转义点的情况下工作,但最好让它转义。
      • 会无意中匹配.,. - 不过,不确定是否有一个 100% 有用的解决方案,而不会使 RE 变得不必要地复杂。需要来自 OP 的更多信息...
      • *s 更改为+ 会有所帮助。但如果数据集中有麻烦的记录,如果 OP 将它们添加到示例中,我很乐意进一步修改我的答案。
      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多