我想解析cmd “gpg --列表键”的结果,以在浏览器上显示它。厘米输出如下:
pub rsa3072 2021-08-03 [SC] [expires: 2023-08-03]
07C47E284765D5593171C18F00B11D51A071CB55
uid [ultimate] user1 <user1@example.com>
sub rsa3072 2021-08-03 [E] [expires: 2023-08-03]
pub rsa3072 2021-08-04 [SC]
37709ABD4D96324AB8CBFC3B441812AFBCE7A013
uid [ultimate] user2 <user2@example.com>
sub rsa3072 2021-08-04 [E]
我期望这样的事情:
{
{uid : user1@example.com},
{uid : user2@example.com},
}
代码如下:
type GPGList struct{
uid string
}
//find list keys
func Findlistkeys(){
pathexec, _ := exec.LookPath("gpg")
cmd := exec.Command(pathexec, "--list-keys")
cmdOutput := &bytes.Buffer{}
cmd.Stdout = cmdOutput
printCommand(cmd)
err := cmd.Run()
printError(err)
output := cmdOutput.Bytes()
printOutput(output)
GPG := GPGList{}
parseOutput(output, &GPG)
fmt.Println(GPG)
}
func printCommand(cmd *exec.Cmd) {
fmt.Printf("==> Executing: %s\n", strings.Join(cmd.Args, " "))
}
func printError(err error) {
if err != nil {
os.Stderr.WriteString(fmt.Sprintf("==> Error: %s\n", err.Error()))
}
}
func printOutput(outs []byte) {
if len(outs) > 0 {
fmt.Printf("==> Output: %s\n", string(outs))
}
}
func parseOutput(outs []byte, GPG *GPGList) {
var uid = regexp.MustCompile(`(?<=\<)(.*?)(?=\>)`)
fmt.Println(uid)
}
它以以下消息结尾:
panic: regexp: Compile(`(?<=\<)(.*?)(?=\>)`): error parsing regexp: invalid or unsupported Perl syntax: `(?<
到目前为止,我正在与正则表达式堆叠。它不明白为什么它不想编译...这是怎么回事?
我已经在在线模拟器上测试了正则表达式,它看起来还不错,但是它有问题。有什么建议吗?
万千封印
慕的地8271018
哔哔one
qq_花开花谢_0
随时随地看视频慕课网APP
相关分类