Golang正则表达式在括号内获取值
问题描述:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( \"fmt\" \"regexp\" ) func main() { r := regexp.MustCompile(`((.*))`) s := `(tag)SomeText` res := r.FindStringSubmatch(s) fmt.Println(res[1]) } |
How to Get Value inside parentheses?
图片转代码服务由CSDN问答提供
感谢您的意见,我们尽快改进~
功能建议
代码:</ p>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
包main import(\\ n“ fmt” “ regexp” ) func main(){ r:= regexp.MustCompile(`((。*))`) s:=`(tag)SomeText` \\ n res:= r.FindStringSubmatch(s) fmt.Println(res [1]) } </ code> </ pre> <p>如何在括号内获取值?</ p> </ div> <h3>网友观点:</h3> <div> <p>1- While it is simple using regex (try it on <a>The Go Playground</a>):</p> <pre><code>package main import ( \\\"fmt\\\" \\\"regexp\\\" ) var rgx = regexp.MustCompile(`\\((.*?)\\)`) func main() { s := `(tag)SomeText` rs := rgx.FindStringSubmatch(s) fmt.Println(rs[1]) } |
output:
1 2 |
tag |
2- but sometimes using strings.Index
is fast enough (try it on The Go Playground):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package main import ( \\\"fmt\\\" \\\"strings\\\" ) func match(s string) string { i := strings.Index(s, \\\"(\\\") if i >= 0 { j := strings.Index(s[i:], \\\")\\\") if j >= 0 { return s[i+1 : j-i] } } return \\\"\\\" } func main() { s := `(tag)SomeText` r := match(s) fmt.Println(r) } |
output:
1 2 |
tag |
3- This simple benchmark shows using regex takes 931ms and using strings.Index
takes 43ms for 1000000 iterations.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package main import ( \\\"fmt\\\" \\\"regexp\\\" \\\"strings\\\" \\\"time\\\" ) var rgx = regexp.MustCompile(`\\((.*?)\\)`) const n = 1000000 func main() { var rs []string var r string s := `(tag)SomeText` t := time.Now() for i := 0; i < n; i++ { rs = rgx.FindStringSubmatch(s) } fmt.Println(time.Since(t)) fmt.Println(rs[1]) // [(tag) tag] t = time.Now() for i := 0; i < n; i++ { r = match(s) } fmt.Println(time.Since(t)) fmt.Println(r) } func match(s string) string { i := strings.Index(s, \\\"(\\\") if i >= 0 { j := strings.Index(s[i:], \\\")\\\") if j >= 0 { return s[i+1 : j-i] } } return \\\"\\\" } |
I got My problem solved by this regex
1 2 |
r := regexp.MustCompile(`\\((.*?)\\)`) |
在python中,如何用正则表达式提取多层括号中最外层括号包含的内容呢?
不规则嵌套结构的分析
最好还是用栈
如果已经确定嵌套的结构
才可以考虑使用正则
先用贪婪取出整体的数据
然后对数据规划出相似的结构
第一个很简单就不用说了
第二个可以写成这样
由于网站搬家,部分链接失效,如无法下载,请联系站长!谢谢支持!
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » Golang正则表达式在括号内获取值
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » Golang正则表达式在括号内获取值