<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • go語(yǔ)言正則表達(dá)式教程 go語(yǔ)言規(guī)范

            golang 正則正則表達(dá)式反向查詢

            基本上所有的語(yǔ)言都有正則表達(dá)式,golang也不例外。golang原生使用regexp包進(jìn)行正則表達(dá)式的匹配。正常情況下滿足基礎(chǔ)的查詢功能。但是,golang為了正則表達(dá)式的效率一直堅(jiān)持O(n)的搜索復(fù)雜度,所以有些高級(jí)特性將無(wú)法滿足。

            成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),三明網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:三明等地區(qū)。三明做網(wǎng)站價(jià)格咨詢:028-86922220

            正則表達(dá)式可以通過\1的形式反向查詢之前匹配的數(shù)據(jù),但是原生自帶的regxp是不支持該特性。所以只能使用第三方庫(kù)來支持。

            怎樣學(xué)習(xí)GO語(yǔ)言?

            golang學(xué)習(xí)比較簡(jiǎn)單,不過任何一門語(yǔ)言都不是孤立存在的,在這里簡(jiǎn)要說明一下golang開發(fā)的學(xué)習(xí)路線

            1.golang基礎(chǔ),包括go語(yǔ)言安裝,go語(yǔ)言語(yǔ)法,流程控制語(yǔ)句,函數(shù),方法,面向?qū)ο蟾拍?,網(wǎng)絡(luò)編程,并發(fā)編程等

            2.golang開發(fā)框架,包括beego,gin,Iris,Echo等

            3.微服務(wù)開發(fā)

            4.深入的話還可以學(xué)習(xí)算法部分。如果要接觸區(qū)塊鏈相關(guān)技術(shù)的話,還需要學(xué)習(xí)區(qū)塊鏈的加密算法等相關(guān)知識(shí)

            5.如果要結(jié)合go實(shí)現(xiàn)應(yīng)用的話,肯定離不開各種數(shù)據(jù)庫(kù),比如關(guān)系型數(shù)據(jù)庫(kù)oracle、mysql,或者各類非關(guān)系型數(shù)據(jù)庫(kù)等等

            6.如果需要開發(fā)界面的話,還需要學(xué)習(xí)網(wǎng)頁(yè)編程如html,javascript,vue,elementUI,bootstrap等網(wǎng)頁(yè)開發(fā)技術(shù)和框架。

            7.在以上學(xué)習(xí)的基礎(chǔ)上還可以向架構(gòu)方面深入學(xué)習(xí)。

            鏈喬教育在線祝您學(xué)有所成。

            go語(yǔ)言有支持正則表達(dá)式后向引用的方法嗎

            go語(yǔ)言有支持正則表達(dá)式后向引用的方法,方法如下

            package main

            import (

            "fmt"

            "os"

            "path/filepath"

            "regexp"

            )

            func main() {

            // 命令行參數(shù)

            args := os.Args

            // 檢查參數(shù)

            if len(args) == 1 {

            fmt.Println("ff is a file find tool. use like bottom")

            fmt.Println("ff [dir] [regexp]")

            return

            }

            if len(args) 3 {

            fmt.Println("args 3")

            return

            }

            fileName := args[1]

            pattern := args[2]

            file, err := os.Open(fileName)

            if err != nil {

            fmt.Println(err)

            return

            }

            fi, err := file.Stat()

            if err != nil {

            fmt.Println(err)

            return

            }

            if !fi.IsDir() {

            fmt.Println(fileName, " is not a dir")

            }

            reg, err := regexp.Compile(pattern)

            if err != nil {

            fmt.Println(err)

            return

            }

            // 遍歷目錄

            filepath.Walk(fileName,

            func(path string, f os.FileInfo, err error) error {

            if err != nil {

            fmt.Println(err)

            return err

            }

            if f.IsDir() {

            return nil

            }

            // 匹配目錄

            matched := reg.MatchString(f.Name())

            if matched {

            fmt.Println(path)

            }

            return nil

            })

            }

            golang正則表達(dá)式 分組命名

            正則中有分組這個(gè)功能,在golang中也可以使用命名分組。

            一次匹配的情況

            場(chǎng)景還原如下:

            有一行文本,格式為:姓名 年齡 郵箱地址

            請(qǐng)將其轉(zhuǎn)換為一個(gè)map

            代碼實(shí)現(xiàn)如下:

            str := `Alice 20 [email protected]`

            // 使用命名分組,顯得更清晰

            re := regexp.MustCompile(`(?Pname[a-zA-Z]+)\s+(?Page\d+)\s+(?Pemail\w+@\w+(?:\.\w+)+)`)

            match := re.FindStringSubmatch(str)

            groupNames := re.SubexpNames()

            fmt.Printf("%v, %v, %d, %d\n", match, groupNames, len(match), len(groupNames))

            result := make(map[string]string)

            // 轉(zhuǎn)換為map

            for i, name := range groupNames {

            if i != 0 name != "" { // 第一個(gè)分組為空(也就是整個(gè)匹配)

            result[name] = match[i]

            }

            }

            prettyResult, _ := json.MarshalIndent(result, "", " ")

            fmt.Printf("%s\n", prettyResult)

            輸出為:

            [Alice 20 [email protected] Alice 20 [email protected]], [ name age email], 4, 4

            {

            "age": "20",

            "email": "[email protected]",

            "name": "Alice"

            }

            注意 [ name age email]有4個(gè)元素, 第一個(gè)為""。

            多次匹配的情況

            接上面的例子,實(shí)現(xiàn)一個(gè)更貼近現(xiàn)實(shí)的需求:

            有一個(gè)文件, 內(nèi)容大致如下:

            Alice 20 [email protected]

            Bob 25 [email protected]

            gerrylon 26 [email protected]

            ...

            更多內(nèi)容

            和上面一樣, 不過這次轉(zhuǎn)出來是一個(gè)slice of map, 也就是多個(gè)map。

            代碼如下:

            // 文件內(nèi)容直接用字符串表示

            usersStr := `

            Alice 20 [email protected]

            Bob 25 [email protected]

            gerrylon 26 [email protected]

            `

            userRe := regexp.MustCompile(`(?Pname[a-zA-Z]+)\s+(?Page\d+)\s+(?Pemail\w+@\w+(?:\.\w+)+)`)

            // 這里要用FindAllStringSubmatch,找到所有的匹配

            users := userRe.FindAllStringSubmatch(usersStr, -1)

            groupNames := userRe.SubexpNames()

            var result []map[string]string // slice of map

            // 循環(huán)所有行

            for _, user := range users {

            m := make(map[string]string)

            // 對(duì)每一行生成一個(gè)map

            for j, name := range groupNames {

            if j != 0 name != "" {

            m[name] = strings.TrimSpace(user[j])

            }

            }

            result = append(result, m)

            }

            prettyResult, _ := json.MarshalIndent(result, "", " ")

            fmt.Println(string(prettyResult))

            輸出為:

            [

            {

            "age": "20",

            "email": "[email protected]",

            "name": "Alice"

            },

            {

            "age": "25",

            "email": "[email protected]",

            "name": "Bob"

            },

            {

            "age": "26",

            "email": "[email protected]",

            "name": "gerrylon"

            }

            ]

            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            15

            16

            17

            總結(jié)

            使用命名分組可以使正則表示的意義更清晰。

            轉(zhuǎn)換為map更加符合人類的閱讀習(xí)慣,不過比一般的根據(jù)索引取分組值麻煩一些。

            ————————————————

            版權(quán)聲明:本文為CSDN博主「butterfly5211314」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

            原文鏈接:

            GO語(yǔ)言入門,有什么好的教程???

            可以學(xué)習(xí)黑馬程序員的這個(gè)教程

            20小時(shí)快速入門go語(yǔ)言:網(wǎng)頁(yè)鏈接

            go語(yǔ)言的優(yōu)勢(shì)

            可直接編譯成機(jī)器碼,不依賴其他庫(kù),glibc的版本有一定要求,部署就是扔一個(gè)文件上去就完成了。

            靜態(tài)類型語(yǔ)言,但是有動(dòng)態(tài)語(yǔ)言的感覺,靜態(tài)類型的語(yǔ)言就是可以在編譯的時(shí)候檢查出來隱藏的大多數(shù)問題,動(dòng)態(tài)語(yǔ)言的感覺就是有很多的包可以使用,寫起來的效率很高。

            語(yǔ)言層面支持并發(fā),這個(gè)就是Go最大的特色,天生的支持并發(fā)。Go就是基因里面支持的并發(fā),可以充分的利用多核,很容易的使用并發(fā)。

            內(nèi)置runtime,支持垃圾回收,這屬于動(dòng)態(tài)語(yǔ)言的特性之一吧,雖然目前來說GC(內(nèi)存垃圾回收機(jī)制)不算完美,但是足以應(yīng)付我們所能遇到的大多數(shù)情況,特別是Go1.1之后的GC。

            簡(jiǎn)單易學(xué),Go語(yǔ)言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go關(guān)鍵字是25個(gè),但是表達(dá)能力很強(qiáng)大,幾乎支持大多數(shù)你在其他語(yǔ)言見過的特性:繼承、重載、對(duì)象等。

            豐富的標(biāo)準(zhǔn)庫(kù),Go目前已經(jīng)內(nèi)置了大量的庫(kù),特別是網(wǎng)絡(luò)庫(kù)非常強(qiáng)大。

            內(nèi)置強(qiáng)大的工具,Go語(yǔ)言里面內(nèi)置了很多工具鏈,最好的應(yīng)該是gofmt工具,自動(dòng)化格式化代碼,能夠讓團(tuán)隊(duì)review變得如此的簡(jiǎn)單,代碼格式一模一樣,想不一樣都很困難。

            跨平臺(tái)編譯,如果你寫的Go代碼不包含cgo,那么就可以做到window系統(tǒng)編譯linux的應(yīng)用,如何做到的呢?Go引用了plan9的代碼,這就是不依賴系統(tǒng)的信息。

            內(nèi)嵌C支持,Go里面也可以直接包含C代碼,利用現(xiàn)有的豐富的C庫(kù)。

            當(dāng)前題目:go語(yǔ)言正則表達(dá)式教程 go語(yǔ)言規(guī)范
            新聞來源:http://www.jbt999.com/article8/hppiop.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、App設(shè)計(jì)網(wǎng)站策劃、品牌網(wǎng)站制作定制開發(fā)

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

            手機(jī)網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 五月色综合网 | 欧美性爱成人视频网站 | GOGO大胆无码人体免费视频 | 男人美女一起搞基视频网站 | 5252色成人免费 |