python regex split函数在golang中的等效函数

rqmkfv5c  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(119)

我下面的Python代码匹配regex::

import re
digits_re = re.compile("([0-9eE.+]*)")

p = digits_re.split("Hello, where are you 1.1?")

print(p)

它给出以下输出:第 一个月
我正在尝试使用golang获得上面的输出。

package main

import (
    "bytes"
    "fmt"
    "log"
    "os/exec"
    "regexp"
    "strconv"
)

func main() {
    // Execute the command and get the output
    cmd := exec.Command("echo", "Hello, where are you 1.1?")
    var out bytes.Buffer
    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }

    // Extract the numerical values from the output using a regular expression
    re := regexp.MustCompile(`([0-9eE.+]*)`)
    //matches := re.FindAllString(out.String(), -1)
    splits := re.Split(out.String(), -1)
    fmt.Println(splits)

}

我得到如下输出::

[H l l o ,   w h r   a r   y o u   ? 
]

我认为正则表达式是依赖于语言的,所以python中使用的split()函数对golang没有帮助。使用了regexp包中的多个Find*()函数,但找不到一个可以提供上述python程序输出的函数。
输出字符串数组的目标是分隔不能转换为float的字符&如果字符串可以解析为浮点型,我就计算移动平均值。
最后,我把所有的东西结合起来,像Linux watch命令一样呈现输出。
你需要更多的细节/背景吗?我很乐意分享。
非常感谢您的帮助!

eit6fx6z

eit6fx6z1#

为了匹配给定的输出,请看看这是否有助于您。

import re
p = re.sub(r"[0-9eE.+]", "", "Hello, where are you 1.1?")
p = [p] 
# p = list(p) ## based on your requirement
print(p)

相关问题