用于查找替换字符串开头和结尾的正则表达式
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/
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
我的技能很基础。我希望找到 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/
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