用于查找替换字符串开头和结尾的正则表达式

Regex to Find Replace Beginning and End of String

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

比如。搜索 url,开头为 /shop/,结尾为 .htm。然后我想用 /product/ 替换 /shop/ 并用前向 /

替换 .htm

例如

http://www.website.com/shop/ford-truck-hitch-extension.htm

变成

http://www.website.com/product/ford-truck-hitch-extension/

这个位找到了实例,但我不知道如何替换开头和结尾。

shop[^<]+.htm

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

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

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

s|com/shop/|com/product/|
s|\.htm$|/|

会做你想要的一对替换。第一个也适用于由于某种原因具有子字符串 "com/shop/" 的任何内容,所以正如我所说 - 如果您需要提高特异性,您可以。

如果您绝对需要一次完成:

s|com/shop/(.*)\.htm$|com/product//|

将 select 并保存括号之间的所有内容并将其重新插入到您的最终结果中,以便您进行所需的两项更改。

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

找到这个:

/shop/(.*?)\.htm

并替换为:

/product//

可以用一个正则表达式来完成,试试:

com\/\Kshop(\/.*?)\.htm

并替换为:

product/

DEMO

  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 :
--------------------------------------------------------------------------------
    \/                     '/'
--------------------------------------------------------------------------------
    .*?                    any character except \n (0 or more times
                           (matching the least amount possible))
--------------------------------------------------------------------------------
  )                        end of 
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  htm                      'htm'

要了解有关正则表达式的更多信息,请随时访问 The Stack Overflow Regular Expressions FAQ