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正則表達式在括弧內獲取值