fmt.Printf(%s, string(output)) 此时string可以省略

os/exec: don’t convert byte slice to string when using verb %s

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {

str := "abc"

output := []byte(str)

fmt.Println(output)
fmt.Printf("%s\n", output)
fmt.Printf("%s\n", string(output))
}

输出:

1
2
3
[97 98 99]
abc
abc

`帮我写一段正则,匹配同时包含 Printf,%s,string( 的行``


如果你要找到同时包含 “Printf”,”%s”,和 “string(“ 的行,你可以使用下面的正则表达式:

1
^(?=.*Printf)(?=.*%s)(?=.*string\().*$

这个正则表达式是如何工作的呢?

  • ^:表示一个字符串的开始。
  • (?=.*Printf):这是一个正向肯定预查。意思是,只有当字符串中有 “Printf” 时,才匹配。
  • (?=.*%s):这也是一个正向肯定预查。意思是,只有当字符串中有 “%s” 时,才匹配。
  • (?=.*string\():这也是一个正向肯定预查。意思是,只有当字符串中有 “string(“ 时,才匹配。
  • .*$:这部分将匹配任何字符(. 表示任何字符,* 表示零次或多次),直到字符串的结束($)。

这个表达式的整体含义是,只有当一行的文本同时包含 “Printf”,”%s”,和 “string(“ 这三个字符串时,才会被匹配。

注意,这个表达式不考虑这三个字符串的顺序。如果你需要在特定的顺序中匹配这些字符串,你需要修改或创建一个新的正则表达式。


这个正则会有很多冗余信息,但是荣誉不咋多


https://go-review.googlesource.com/c/go/+/521136

https://github.com/golang/go/commit/0163b3b32cad2ed3331e2b197c68387f12246cd8


https://github.com/ethereum/go-ethereum/pull/29184

https://go-review.googlesource.com/c/go/+/569715