ab1-cde23-fg45-h6-ijk-789.lmn.local. 86400 IN A 12.34.5.123
Run Code Online (Sandbox Code Playgroud)
在以下DNS条目中,我正在尝试匹配该h6部分(位置4).在这一点上,我知道域的这一部分只由2个字母/数字或每个字母组成,所以我可以匹配它(以笨拙的方式)
"-[a-zA-Z0-9]{2}-"
Run Code Online (Sandbox Code Playgroud)
在我不能假设这是2个字母/数字的域的唯一部分的情况下,我怎么能只匹配第4个位置的内容减去-?(ab1作为第一个位置,cde23第二个,依此类推,所有位置分开-)
我可以使用以下正则表达式匹配第4个位置,但它从一开始就包含所有内容.
"([a-zA-Z0-9]*-){3}[a-zA-Z0-9]*-"
Run Code Online (Sandbox Code Playgroud)
我在golang中使用这些regexp.
做:
^(?:[^-]+-){3}([^-]+)
Run Code Online (Sandbox Code Playgroud)
^(?:[^-]+-){3}匹配-分开的前3个字段,(?:)使组不捕获
捕获的组([^-]+) 将包含-分隔的第4个字段.
虽然我们在这,你应该看看字符串操作而不是昂贵的Regex实现,普通strings.Split()应该这样做:
package main
import (
"fmt"
"strings"
)
func main() {
s := "ab1-cde23-fg45-h6-ijk-789.lmn.local. 86400 IN A 12.34.5.123"
fmt.Println(strings.Split(s, "-")[3])
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |