所以这将是我的样本:
In Kenya since 2010 <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&" onclick="yt.www.watch.player.seekTo(2*60+48);return false;">2:48</a>
Where comes from: Bukavu <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&" onclick="yt.www.watch.player.seekTo(3*60+29);return false;">3:29</a>
She would have been killed <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&" onclick="yt.www.watch.player.seekTo(5*60+15);return false;">5:15</a>
现在时间m:ss(如 2:48 )应该保持原样,但也可以附加到之前之前的链接,在&之后#34;&安培;&#34;并采用以下格式: 2:48 应该变为 t = 2m48s
所以,最后,整个事情应该是这样的(检查链接的结尾)
In Kenya since 2010 <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&t=2m48s" onclick="yt.www.watch.player.seekTo(2*60+48);return false;">2:48</a>
Where comes from: Bukavu <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&t=3m29s" onclick="yt.www.watch.player.seekTo(3*60+29);return false;">3:29</a>
She would have been killed <a href="https://www.youtube.com/watch?v=fDTGpMJi0OI&list=PLqGkpApxFsX8k8ENdCr-9v8iRa2q5jXaE&t=5m15s" onclick="yt.www.watch.player.seekTo(5*60+15);return false;">5:15</a>
现在我发现,我可以使用 \ d:.. 来查找时间,但我不知道如何继续或者是否可以使用崇高文本?
答案 0 :(得分:1)
更新2:
我发誓我在YouTube上查了一下,然后我就可以使用&t=h5m10s
转到视频,它可以用作0:05:10
。如果您需要5m10s
或0h5m10s
,则需要执行两个不同的表达式(因为Sublime Text不允许您在正则表达式替换上执行复杂的回调函数)。
替换h:mm:ss
:
href="(.*?)"(.*?)>(\d*):(\d{2}):(\d{2})
href="$1&t=$3h$4m$5s"$2>$3:$4:$5
替换m:ss
:
href="(.*?)"(.*?)>(\d{1,2}):(\d{2})(?!:\d)
href="$1&t=$3m$4s"$2>$3:$4
需要解释的唯一不寻常的语法是(?!:\d)
。 ?!
语法用于“负向前瞻”。这意味着匹配组后面不会追加:\d
,否则会匹配小时/分钟/秒。
<强>更新强>
这是updated expression for matching optional hours。我仔细检查过,你可以使用&t=h##m##s
(如果它不匹配,则为空白小时)。这意味着我们可以进行一次搜索/替换,如果它不存在则只有一小时的空白捕获(你会在一秒钟内看到我的意思)。
匹配这个:
href="(.*?)"(.*?)>((?:(\d*):)?(\d{1,2}):(\d{2}))
并替换为:
href="$1&t=$4h$5m$6s"$2>$3
事情在这里变得有点复杂。让我们仔细看看变化的部分:
( # start an overarching capture group
(\d*):? # capture 0+ digits followed by an optional : (hours)
(\d{1,2}): # capture 1-2 digits followed by a : (minutes)
(\d{2}) # capture the last 2 digits (seconds)
) # end the capture group
现在您可能想知道为什么我使用了那个首要的捕获组。这是因为我们需要一种方法来保持锚链接的内容相同。如果我们不使用此功能,则必须将其替换为hour:minute:second
,并且小时可能为空(意味着3:45
将替换为:3:45
)。
你可以匹配:
href="(.*?)"(.*?)>(\d)+:(\d{2})
并将其替换为
href="$1&t=$3m$4s"$2>$3:$4
这是如何工作的,它首先找到任何锚点的href,同时捕获第一个捕获组中的内容。然后我们捕获第二个捕获组中>
的所有内容。接下来我们捕获1位数(第三次捕获),然后是:
,最后捕获最后2位数(第四次捕获)。
我们基本上用相同的内容替换它,但请确保将&t=$3m$4s
附加到链接的末尾。您可以在Regex101上看到一个有效的示例。