Regex 正则表达式查找字符串的开头和结尾

Regex 正则表达式查找字符串的开头和结尾,regex,replace,sublimetext3,Regex,Replace,Sublimetext3,我的技能很基本。我希望为Sublime Text 3找到一个正则表达式,它通过开头和结尾查找字符串。我想保持中间不变,我只想替换开头和结尾 比如说。用/shop/开头和.htm结尾搜索url。然后,我想将/shop/替换为/product/,并将.htm替换为转发/ e、 g 变成 http://www.website.com/product/ford-truck-hitch-extension/ 此位查找实例,但我不知道如何替换开头和结尾 shop[^<]+.htm shop[^因此

我的技能很基本。我希望为Sublime Text 3找到一个正则表达式,它通过开头和结尾查找字符串。我想保持中间不变,我只想替换开头和结尾

比如说。用
/shop/
开头和.htm结尾搜索url。然后,我想将
/shop/
替换为
/product/
,并将
.htm
替换为转发
/

e、 g

变成

http://www.website.com/product/ford-truck-hitch-extension/
此位查找实例,但我不知道如何替换开头和结尾

shop[^<]+.htm

shop[^因此,您实际上并不是在寻找字符串的开头。您是在寻找“.com”之后的部分字符串。至于字符串的结尾,
$
将匹配它

我还建议使用两个表达式,因为它使两个替换更加明显

根据需要的具体程度,这对表达式:

s|com/shop/|com/product/|
s|\.htm$|/|
将执行您想要的两个替换。第一个也将处理由于某种原因具有替换字符串“com/shop/”的任何内容,正如我所说的——如果您需要改进特定性,您可以

如果您确实需要一次性完成:

s|com/shop/(.*)\.htm$|com/product/\1/|
将选择并保存括号之间的所有内容,并将其重新插入最终结果,从而允许您进行所需的两项更改

PS:我不确定升华文本如何处理转义——其中一些(如括号或反斜杠)可能需要转义

找到这个:

/shop/(.*?)\.htm
并替换为:

/product/\1/

可以使用单个正则表达式完成,请尝试:

com\/\Kshop(\/.*?)\.htm
并替换为:

product\1/


要阅读有关regex的更多信息,请访问

如果使用VS Code查找替换,请在/product/\1/中使用$1而不是\1
product\1/
  NODE                     EXPLANATION
--------------------------------------------------------------------------------
  com                      'com'
--------------------------------------------------------------------------------
  \/                       '/'
--------------------------------------------------------------------------------
  \K                       Resets the starting point of the reported match
                           ie: Everything that has been matched till this 
                               point won't be changed
--------------------------------------------------------------------------------
  shop                     'shop'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    \/                     '/'
--------------------------------------------------------------------------------
    .*?                    any character except \n (0 or more times
                           (matching the least amount possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  htm                      'htm'