我有一个Web服务,它在css文件中重写URL,以便通过CDN提供服务.
css文件可以包含图像或字体的URL.
我目前有以下正则表达式匹配css文件中的所有URL:
(url\(\s*([\'\"]?+))((?!(https?\:|data\:|\.\.\/|\/))\S+)((\2)\s*\))
Run Code Online (Sandbox Code Playgroud)
但是,我现在想要引入对自定义字体的支持,并且需要在以下内容中定位网址@font-fontface:
@font-face {
font-family: 'FontAwesome';
src: url("fonts/fontawesome-webfont.eot?v=4.0.3");
src: url("fonts/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"), url("fonts/fontawesome-webfont.woff?v=4.0.3") format("woff"), url("fonts/fontawesome-webfont.ttf?v=4.0.3") format("truetype"), url("fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg");
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
然后我想出了以下内容:
@font-face\s*\{.*(url\(\s*([\'\"]?+))((?!(https?\:|data\:|\.\.\/|\/))\S+)((\2)\s*\))\s*\}
Run Code Online (Sandbox Code Playgroud)
问题是,这匹配所有内容,而不仅仅是内部的网址.我以为我可以这样使用lookbehind:
(?<=@font-face\s*\{.*)(url\(\s*([\'\"]?+))((?!(https?\:|data\:|\.\.\/|\/))\S+)((\2)\s*\))(?<=-\s*\})
Run Code Online (Sandbox Code Playgroud)
不幸的是,PCRE(PHP使用)不支持lookbehind中的变量重复,所以我被卡住了.
我不希望通过扩展名检查字体,因为某些字体的.svg扩展名可能与.svg扩展名的图像冲突.
另外,我还想修改我的原始正则表达式以匹配不在以下内容中的所有其他网址@font-face:
.someclass {
background: url('images/someimage.png') no-repeat;
}
Run Code Online (Sandbox Code Playgroud)
由于我无法使用lookbehinds,我如何从a中的@font-face那些和不在a中的那些中提取url @font-face?
我正在使用reflect包来确定struct字段的类型 interface{}
我想做这样的比较(在哪里t是reflect.Type):
if t == reflect.TypeOf(interface{}) {
}
Run Code Online (Sandbox Code Playgroud)
问题是编译器抱怨:type interface {} is not an expression.
反正有没有检查结构域的类型是否是interface{}?
我想在某个标签上创建一个 git 存储库的稀疏和浅层克隆。
这就是我目前正在做的事情:
git init avatica-tmp
cd avatica-tmp
git remote add origin https://github.com/apache/calcite-avatica/
git config core.sparsecheckout true
echo "core/src/main/protobuf/*" >> .git/info/sparse-checkout
git pull --depth=1 origin rel/avatica-1.10.0
Run Code Online (Sandbox Code Playgroud)
它工作正常,但抛出错误:
remote: Counting objects: 531, done.
remote: Compressing objects: 100% (381/381), done.
remote: Total 531 (delta 147), reused 280 (delta 51), pack-reused 0
Receiving objects: 100% (531/531), 963.03 KiB | 233.00 KiB/s, done.
Resolving deltas: 100% (147/147), done.
From https://github.com/apache/calcite-avatica
* tag rel/avatica-1.10.0 -> FETCH_HEAD
fatal: update_ref failed for ref 'HEAD': cannot update …Run Code Online (Sandbox Code Playgroud) 我是使用ImageMagick的新手.我正在使用PHP的最新imagick扩展(3.1.0rc1).然而,想象力的文档似乎有点稀疏.
我想用alpha通道创建一个ImagickPixel对象.该文件指出,这些都是一些有效的颜色值传递给构造函数:"blue", "#0000ff", "rgb(0,0,255)", "cmyk(100,100,100,10)", etc.
我知道有可能使用ImagickPixel来检索alpha值getColorValue(imagick::COLOR_ALPHA);.
那么,如何在对象初始化期间通过传递给构造函数来设置带有alpha通道的rgb颜色?
我有一个选择块,它正在收听 2 个频道、一个自动收报机和一个计时器:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(5 * time.Second)
for {
select {
case z := <-ticker.C:
fmt.Printf("tick %d\n", z)
case <-time.After(12 * time.Second):
fmt.Println("12 seconds elapsed!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行代码,time.After案例永远不会运行,但自动收报机工作正常。
如果我删除自动收报机,time.After则会正确触发:
package main
import (
"fmt"
"time"
)
func main() {
for {
select {
case <-time.After(12 * time.Second):
fmt.Println("12 seconds elapsed!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用计时器而不是time.After:
package main
import (
"fmt"
"time"
)
func …Run Code Online (Sandbox Code Playgroud) 我试图将表单中的标签对齐到文本输入框下方.我从这里改编了我的CSS .
它在IE 9中完美显示,但我遇到了firefox,chrome等问题.
这是IE中的样子:

这就是它在firefox中的样子:

它在chrome中看起来最糟糕,但我想首先在firefox中使用它.
主要关注点是:
这是我的标记:
<form action="" method="post">
<label for="time">Time settings</label>
<div class="description">
Description goes here
</div>
<span><label for="time">Hour</label> <input type="text" id="time" name="time" maxlength="2" size="2"></span>
<span>:</span>
<span><label for="time-minute">Minute</label> <input type="text" id="time-minute" name="time-minute" maxlength="2" size="2"></span>
<span>:</span>
<span><label for="time-seconds">Seconds</label> <input type="text" id="time-seconds" name="time-seconds" maxlength="2" size="2"></span>
<span>
<select id="time-ampm" name="time-ampm">
<option value="am">AM</option>
<option value="pm">PM</option>
</select>
</span>
</form>
Run Code Online (Sandbox Code Playgroud)
这是CSS风格:
<style>
span{
display: inline-block;
}
span input {
display: block;
position: relative;
top: -3em;
text-align: center; …Run Code Online (Sandbox Code Playgroud)