Home > Backend Development > Golang > python regular expression split function equivalent in golang

python regular expression split function equivalent in golang

王林
Release: 2024-02-13 19:45:09
forward
540 people have browsed it

python 正则表达式 split 函数在 golang 中等效

In the field of programming, regular expressions are a powerful tool for matching and processing strings. In Python, the split function is a commonly used regular expression function used to split a string into substrings. However, for developers using Golang, they may wonder how to achieve the same functionality in Golang as the split function in Python. In this article, PHP editor Zimo will introduce you to how to use the regular expression split function equivalently in Golang to better utilize this powerful tool.

Question content

I have the following python code to match a regular expression::

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

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

print(p)
Copy after login

It gives this output:: ['', '', 'h', 'e', ​​'', '', 'l', '', 'l', '', 'o', '', ',', ' ', ' ', '', 'w', '', 'h', 'e', ​​'', '', 'r', 'e', ​​'', '', ' ', '', ' a' , '', 'r', 'e', ​​'', '', ' ', '', 'y', '', 'o', '', 'u', '', ' ', '1.1 ', '', '', '?', '', '']

I'm trying to get the above output using 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)

}
Copy after login

I get the following output::

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

I think regular expressions are language dependent, so the split() function used in python is not helpful for golang. Used multiple find*() functions from the regexp package, but could not find one that would provide the output of the above python program.

The goal of the output string array is to separate characters that cannot be converted to float, and if the string can be parsed as a float, I calculate the moving average.

Finally, I combine everything and present the output like a linux watch command.

Do you need more details/background? I'm happy to share.

Thank you for your help!

Workaround

In the meantime, I got something that works for my use case. It is not exactly the same format as python but does not have the empty string/character.

I used the split and findallstring functions to get the desired output.

// unfortunately go regex split doesn't work like python
    // so we construct the entire array with matched string (numericals)
    // and the split strings to combine the output
    splits := digitsre.split(string(out), -1)
    matches := digitsre.findallstring(string(out), -1)

    p := []string{}
    for i := 0; i < len(splits); i++ {
        p = append(p, matches[i])
        p = append(p, splits[i])
    }
Copy after login

With the above code snippet, I get something like ::

[H e l l o ,   w h e r e   a r e   y o u  1.1 ?]
Copy after login

I'm not very good at regex, and somehow the above method works for my use case.

On a lighter note, I've heard colleagues joke that if you solve a problem with the help of regex, you'll end up with two problems! ! !

The above is the detailed content of python regular expression split function equivalent in golang. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template