【问题标题】:How to search and replace with regex in Notepad++如何在 Notepad++ 中使用正则表达式进行搜索和替换
【发布时间】:2014-04-29 14:36:09
【问题描述】:

我有一个 txt 文件,其中包含一些包含 GPS 数据的行,我需要将其缩短。

所以我有

5|{"mResults":0.0|0.0|"mProvider":"fused"|"mDistance":0.0|"mTime":1395061255413|"mAltitude":161.0|"mLongitude":29.0459152|"mLon2":0.0|"mLon1":0.0|"mLatitude":41.0854122|"mLat1":0.0|"mLat2":0.0|"mInitialBearing":0.0|"mHasSpeed":true|"mHasBearing":false|"mHasAltitude":true|"mHasAccuracy":true|"mAccuracy":15.0|"mSpeed":0.425211|"mBearing":0.0}|1395061255413

我只需要提取坐标, 所以把它转换成这个:

29.0459152|41.0854122

编辑:

原来我需要这个:

GPS|29.0459152|41.0854122|0|1395061255413

请注意,我需要:

  • 在前面添加GPS|,在末尾添加|0
  • 而且我还需要附加时间戳值(原始值中的最后一个值)|1395061255413

如何使用 Notepad++ 做到这一点?

感谢您的帮助!

【问题讨论】:

    标签: regex search replace notepad++


    【解决方案1】:

    您可以在 Notepad++ 中做到这一点:

    1. 使用Ctrl+H打开替换弹窗
    2. 勾选 Regular expressionSearch mode 部分
    3. 搜索此模式:.*?"mLongitude":(\d+(?:\.\d+)?).*?"mLatitude":(\d+(?:\.\d+)).*
    4. 替换匹配的字符串为\1|\2
    5. 点击全部替换 ;)

    工作原理:

    我的答案中的正则表达式模式从每行中提取经度和纬度的值,并将整行替换为:

    • mLongitude 值,
    • 文字“|”和
    • mLatitude 值。

    您想更详细地解释这个模式吗,请查看this permalink on regex101


    编辑:

    要包含您所指的 时间戳,您需要使用此正则表达式:

    .*?"mLongitude":(\d+(?:\.\d+)?).*?"mLatitude":(\d+(?:\.\d+)).*\|(\d+)
    

    然后,您只需将替换字符串的格式更改为:

    GPS|\1|\2|0|\3
    

    您可能已经知道了,但让我们仍然写下完整的可用解决方案;)

    我希望这会有所帮助!

    【讨论】:

    • 太棒了,谢谢!但是你能看看我对这个问题的编辑吗?原来我还需要提取最后一个值(时间戳)。所以我想我们需要在这个正则表达式的末尾添加一些东西。但是什么?
    • 我很高兴它起作用了 ;) 请参阅我刚刚对我的答案所做的编辑,以包含与您修改后的问题相匹配的修改后的答案。干杯!
    • 再次感谢@ccjmne!但现在它用包含以下内容的一行替换了整个 .txt 文件:GPS|29.0|41.085369|0|
    • 糟糕!我想我弄错了。我用一个不那么挑剔的答案编辑了我的答案,这个答案肯定可以按预期工作:)
    • 是的,就是这样!非常感谢:)
    【解决方案2】:

    我通过这个解决了我的问题:

    搜索:

    .*?"mTime":(\d+(?:\.\d+)?).*?"mLongitude":(\d+(?:\.\d+)).*?"mLatitude":(\d+(?:\.\d+)).*
    

    替换:

    GPS|\2|\3|0|\1
    

    但这是因为相同的数据(时间戳)也在字符串中。所以这不是从末尾提取时间戳,而是从字符串中间提取。

    因此,如果@ccjmne 编辑从末尾提取的答案,我将接受该答案。

    【讨论】:

    • 嘿,你找到了解决问题的方法真是太棒了!正如你所问的,我仍然使用正则表达式编辑了我对你问题的回答,该正则表达式在每行末尾提取时间戳。这次应该没问题了……我测试了;)
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2011-01-08
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多