在Go中使用正規表示式

2021-10-11 01:56:03 字數 1877 閱讀 2036

在這個案例中宣告了常量text

然後使用了regexp這個包的regexp.compile這個方法。

這種方式是不確定使用者輸入的值是否符合匹配規則。

當然也可以看到結果是返回了我們需要的資料。

但是在一般情況下,如果確定了使用者輸入的內容是正確的是完全符合的就可以使用下方案例。

在這個案例中可以看到regexp.mustcompile使用了這個方法,並且返回的值也是一樣的。

這個方法沒有返回錯誤,但是在自己的內部方法進行了異常處理。

根據注釋可以得知使用這個方法給的引數表示式是不必須可以解析的,如果不能解析則就會丟擲異常。

接下來我們使用正則進行匹配, 也就是在上圖方法中進行正規表示式的匹配。

案例跟上圖使用的一致都是用來匹配郵箱。

那麼接下來先寫第一版本。

可以看到返回結果就是我們想要的。

關於正規表示式的寫法這部分內容在這裡就說明了, 本文主要是針對go如何使用正規表示式。

此時就會反映出第乙個問題,那就是findstring這個方法只能匹配乙個值。

那如何匹配多個值呢!請看下方案例

可以看到返回結果是將所有可以匹配的郵箱都給匹配了出來。

匹配多個值需要使用findallstring這個方法。

第乙個引數為匹配的字元,第二個引數是尋找多少個,-1是全找

在go中給提供了一種非常好的方式可以直接將郵箱名、郵箱網域名稱、和郵箱字尾給提取出來,那麼應該怎麼做呢!

在這裡就不能繼續使用上述案例的方法了,需要使用findallstringsubmatch這個方法

在這個方法中可以得知返回的是乙個二維的字串,從上圖的返回結果也可以得知返回的就是乙個二維的字串。

既然返回的是二維的字串切片,那麼我們就可以進行迴圈來獲取每乙個提取出來的內容。

可以看到返回了四個匹配,第乙個就是完整的,後邊的三個都是我們獲取出來的內容。

通過以上四個案例簡單的了解一下在go中如何使用正規表示式,進行了模擬了幾個場景,和go中的正規表示式包的使用。

這個案例也算是對go的乙個練習,沒有多深的內容,主要就是關於正則包的使用,最重要的就是最後乙個案例,這種正規表示式提取內容在爬蟲的專案中是非常常見的。

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大網際網路中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

在UltraEdit中使用正規表示式

在ultraedit中使用正規表示式 刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一...

在DELPHI中使用正規表示式

在網上發現,有多種方法可在delphi中使用正規表示式。竊以為直接使用微軟的regexp物件會比較簡單,無需額外工作。使用微軟regexp方法 2.註冊vbscript.dll regsvr32 命令,若安裝過vb或ie5以上會預設安裝該dll 3.在delphi中引入 microsoft vbsc...

在UltraEdit中使用正規表示式

刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一行 替換 t p t p 為 1 注意...