golang删除数组的维度

时间:2013-12-10 20:03:01

标签: regex arrays go slice

我在golang中有类似的代码

func GetIndexes(body string) ([]int, error) {

    indexPattern, err := regexp.Compile(`<div class="post article" id="([0-9]+)">`)
    res := indexPattern.FindAllStringSubmatch(body, -1)

    fmt.Printf("%v\n", res)

    //Just for debug
    return make([]int, 5), err
}

例如,结果如下:

[ 
[<div class="post article" id="55987"> 55987] 
[<div class="post article" id="6717024"> 6717024] 
[<div class="post article" id="6440542"> 6440542] 
[<div class="post article" id="6800745"> 6800745] 
[<div class="post article" id="449954"> 449954] 
[<div class="post article" id="427586"> 427586] 
[<div class="post article" id="5418445"> 5418445] 
[<div class="post article" id="559225"> 559225]
... 
]

我正在寻找一种方法来获得像

这样的数组
[55987, 6717024, 6717024, ...] 

我可以调整我想要的数组和复制值,但我不确定这是更好的方法。 这就是为什么我问自己是否可以删除这个数组的列,或者为什么不用lambdas函数或其他函数创建一些切片......

谢谢

1 个答案:

答案 0 :(得分:0)

这更像是一个RegEx引擎问题,因为引擎将按以下格式输出结果:

res[0] // will be the first matched "whole string" occurrence
res[0][0] // will be the whole string match
res[0][1] // will be the first grouped match -- the things in parenthesis
res[0]['some_name'] // will be a named group match

您需要做的是迭代res[i]并检索res[i][1]

由于您尝试匹配的RegEx可能非常复杂 - 它可能有许多分组匹配,许多命名为分组匹配等。 - 结果变量也可能相当复杂。

由于结果变量的(可能)复杂性,RegEx库没有必要为您提供完全按照您描述的功能,因为这些功能的用途非常有限。

编写这样一段代码或功能也是一项微不足道的任务,因此您必须根据自己特定的需求混合搭配自己的代码。