首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将www.evernote.com URL转换为使用evernote协议的regex

将www.evernote.com URL转换为使用evernote协议的regex
EN

Stack Overflow用户
提问于 2014-07-15 17:57:46
回答 2查看 235关注 0票数 0

我正在编写一个简单的脚本,它将使用指向Evernote联机注释的URL,并将它们转换为evernote:///协议。当我在regex测试器中试用URL时,我使用的正则表达式匹配并正确地修改了URL(我使用的是OS模式)。但是,当我将它与sed一起使用时,它只返回原来的字符串。

echo "https://www.evernote.com/shard/s2/nl/227468/1875e55a-e512-4cf9-9b18-9e93c6a27359/" | sed 's#https?:_/_/www_.evernote_.com_/shard_/(..)_/nl_/(......)_/(.+_/)#evernote:_/_/_/view_/$2_/$1_/$3$3#'

知道为什么这不管用吗?谢谢!

炮台

[编辑:如果有人感兴趣,这是一个键盘大师宏的AppleScript位:

set theURL to the clipboard set ENcode to "echo \"" & theURL & "\" | sed -E 's#https?://www.evernote.com/shard/(..)/nl/(.*)/(.+/)#evernote:///view/\\2/\\1/\\3\\3#' | pbcopy" do shell script ENcode

感谢@DreadPirateShawn帮助我修复正则表达式。]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-15 18:14:20

使用扩展的regex标志-E,删除下划线,并将每个$1模式替换为\1,这里将产生一个函数正则表达式:

代码语言:javascript
复制
$ echo "https://www.evernote.com/shard/s2/nl/227468/1875e55a-e512-4cf9-9b18-9e93c6a27359/" | sed -E 's#https?://www\.evernote\.com/shard/(..)/nl/(......)/(.+/)#evernote:///view/\2/\1/\3\3#'
evernote:///view/227468/s2/1875e55a-e512-4cf9-9b18-9e93c6a27359/1875e55a-e512-4cf9-9b18-9e93c6a27359/

(在Ubuntu 12.04和OS上确认)

如果不使用-E,则还需要将s?更改为[s]?并转义分组括号:

代码语言:javascript
复制
$ echo "https://www.evernote.com/shard/s2/nl/227468/1875e55a-e512-4cf9-9b18-9e93c6a27359/" | sed  's#http[s]*://www\.evernote\.com/shard/\(.*\)/nl/\(.*\)/\(.*/\)#evernote:///view/\2/\1/\3\3#'
evernote:///view/227468/s2/1875e55a-e512-4cf9-9b18-9e93c6a27359/1875e55a-e512-4cf9-9b18-9e93c6a27359/

在后一个例子中,我还将每个(....)-type序列替换为(.*) --除非您完全肯定每个序列的长度(甚至可能是肯定的),否则(.*)方法将更加灵活。

票数 0
EN

Stack Overflow用户

发布于 2014-07-15 18:18:29

我想你是在尝试:

代码语言:javascript
复制
echo "https://www.evernote.com/shard/s2/nl/227468/1875e55a-e512-4cf9-9b18-9e93c6a27359/" | sed -re 's#https://www.evernote.com/shard/(..)/nl/(......)/(.+)/#evernote://view/\2/\1/\3#'
evernote://view/227468/s2/1875e55a-e512-4cf9-9b18-9e93c6a27359

不使用扩展正则表达式:

代码语言:javascript
复制
echo "https://www.evernote.com/shard/s2/nl/227468/1875e55a-e512-4cf9-9b18-9e93c6a27359/" | sed  's#https://www.evernote.com/shard/\(..\)/nl/\(......\)/\(.\+\)/#evernote://view/\2/\1/\3#'
evernote://view/227468/s2/1875e55a-e512-4cf9-9b18-9e93c6a27359
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24764994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档