Sublimetext3 有没有办法删除GET单词之前的所有字符?

Sublimetext3 有没有办法删除GET单词之前的所有字符?,sublimetext3,text-editor,Sublimetext3,Text Editor,我在windows上使用升华文本,我有这样的东西 race-position-18374327498.png:1 GET https://google.com/example.png race-position-453452.png:1 GET https://google.com/example1.png race-position-343532.png:1 GET https://google.com/example.png race-position-4543646554764576

我在windows上使用升华文本,我有这样的东西

race-position-18374327498.png:1 GET   https://google.com/example.png
race-position-453452.png:1 GET https://google.com/example1.png
race-position-343532.png:1 GET  https://google.com/example.png
race-position-4543646554764576574564.png: GET https://google.com/example22.png
race-position-5765865865843655.png: GET https://google.com/example434.png
https://google.com/example.png
https://google.com/example1.png
https://google.com/example.png
https://google.com/example22.png
https://google.com/example434.png
我想在get这个词之前把所有的东西都去掉,所以我想要这样的输出

race-position-18374327498.png:1 GET   https://google.com/example.png
race-position-453452.png:1 GET https://google.com/example1.png
race-position-343532.png:1 GET  https://google.com/example.png
race-position-4543646554764576574564.png: GET https://google.com/example22.png
race-position-5765865865843655.png: GET https://google.com/example434.png
https://google.com/example.png
https://google.com/example1.png
https://google.com/example.png
https://google.com/example22.png
https://google.com/example434.png

在任何软件中都有这样做的方法吗?帮助我。提前感谢。

对于您提供的数据集,其中包括不包含GET的行,simplefind+replaceregex

您可以使用顶部菜单中的“查找”然后“替换”,或者随时按“ctrl+h”来实现此目的

  • 查找
    *\shttp

  • 替换
    http

  • 因此,它会替换任何字符,直到找到一个
    (空白)http
    匹配为止

    空白是一个健全的检查,因为左侧可能有“http”,但不太可能有空白后跟http。

    编辑

    @Robert Mennell的评论让我意识到我不知道左手边是否可以包含空格,所以这里有一个改进的正则表达式供你们处理

    要明确的是,这两个版本都适用于OP数据集,如果更简单的正则表达式现在或将来不适用于完整的实际数据集,则改进可能会处理得更好:)

    尽管如此,请随意使用其中一个,我把另一个放在了上面

    查找
    ^(.*)\shttp([^\s]*)$

    替换
    http\2

    在正则表达式中:

    • 表示任何字符
    • *
      表示0-many
    • \s
      表示空白
    • 定义组
    • \1
      \2
      ect是您呼叫这些组的方式
    • ^
      本身就是行开始
    • [
      ]
      是一个字符组
    • [^
      表示负数字符组(因此,除这些字符外的任何字符)
    • $
      是行尾
    行的开始和结束只是确保每一行被分开处理,它通过使用
    [^\s]*
    (表示任意数量的非空白字符)确保http在其后面直到行尾都没有空白来处理左侧的空白

    使用替换中的
    \2
    将第二个
    组中的所有文本重新放入

    因此,它也可以处理http、https以及之后的任何字符,并且只会在每一行的右上角保留内容

    您可以使用更丰富的版本来实现相同的结果,但是至少在sublime text 3中,“查找替换”工具已经有了默认的修改器,因此
    不会替换换行符,并且会找到多个匹配项,因此这是一个非常简单的操作:)


    这里有一个很棒的regex备忘单,它是由sublime text实现的:

    实际上,您想要的是删除uri的
    http
    部分之前的所有内容。要做到这一点,请使用find and replace框,为
    ^.*http
    使用一个regex,并将其替换为
    http
    ,它应该将它们全部删除

    ^ beginning of line  
    .*  
      . any character
      * repeated
    http string of `http`
    
    这将在任何一行中匹配
    http
    (这意味着它也与
    https
    兼容)及其前面的所有字符,并将它们替换为
    http


    在Sublime Text中,您也可以选择文本“GET”和
    ctrl+D
    来选择所有“GET”,然后只需按向右箭头,使光标位于GET word的末尾,然后只需
    shift+home
    。它将选择GET之前的所有内容。然后您可以删除它


    虽然这对较长的文件没有用处。但对于快速完成某些行,您可以使用它。这样做很方便。

    他们不需要空白,因为
    应该注意it@RobertMennell,我知道,谢谢,不过我总是喜欢检查是否正常,以防万一文件名(左部分)在它的某个地方有http,因为它永远不会有空格字符。但是文件名中可以有空格?@RobertMennell-谢谢你,因为我不确定Web服务器或任何工具会避免它,我改进了我的答案,以防万一。这不是用来说Notepad++?它有两个标记,@Elsa请删除notepad++如果不相关,因为regex有许多稍有不同的实现,因此可能会在以后引起混淆:)@DanielBrose感谢您的解释,它帮助了很多。只是删除了notepad++标记。