如何在Google Sheets中用Regex处理URL:去尾补全最后斜杠
解决方案
当然可以用一个嵌套的REGEXREPLACE函数实现这个需求,一步到位处理两种情况:
=REGEXREPLACE(REGEXREPLACE(A1,"\/[^\/]*$",""),"[^\/]$","$0/")
分步解释:
内层
REGEXREPLACE(A1,"\/[^\/]*$",""):- 正则
\/[^\/]*$的意思是:匹配最后一个斜杠\/,加上斜杠后面所有非斜杠字符直到字符串结尾$ - 作用:把最后一个斜杠之后的所有内容(包括斜杠本身如果后面没有内容的话)都去掉
- 示例效果:
http://example.com/dp/tt560/?tag=ukos20→http://example.com/dp/tt560http://example.com/dp/tt560/→http://example.com/dp/tt560http://example.com/dp/tt560→http://example.com/dp/tt560
- 正则
外层
REGEXREPLACE(..., "[^\/]$","$0/"):- 正则
[^\/]$的意思是:匹配字符串结尾不是斜杠的字符 - 作用:如果处理后的字符串结尾没有斜杠,就给它加上一个斜杠
- 示例效果:
http://example.com/dp/tt560→http://example.com/dp/tt560/- 已经是
http://example.com/(内层处理后变成http://example.com)→ 外层处理后变回http://example.com/
- 正则
测试你的示例:
- 原URL:
http://example.com/dp/tt560/?tag=ukos20→ 处理后:http://example.com/dp/tt560/ - 原URL:
http://example.com/dp/tt560/→ 处理后:http://example.com/dp/tt560/
如果你想更简洁,也可以用一个正则表达式搞定,不过可读性稍差一点:
=REGEXREPLACE(A1,"^(.*?)(\/.*)?$","$1/")
这个正则的逻辑是:
^(.*?):非贪婪匹配到第一个可以让后续正则匹配的位置(这里会自动匹配到最后一个斜杠之前的完整路径)(\/.*)?:可选匹配斜杠及后面的所有内容- 替换为
$1/:保留前面匹配到的路径,强制加上结尾斜杠
不过我更推荐第一个嵌套版本,逻辑更清晰,容易理解和调试。
内容的提问来源于stack exchange,提问作者sigur7
相关产品推荐
相关产品推荐

