使用正则匹配并提取字符串中的内容

package main

import (
   "fmt"
   "regexp"
   "strings"
)

func main() {
   //==========================================================//
   //========================= 例子① =========================//
   //==========================================================//

   // 提取字符串里面的“张三~男~18~程序猿”
   str := "let info_ZhangSan='张三~男~18~程序猿';"
   regular := regexp.MustCompile("(?is)let info_\\S+='(\\S+)';")
   match := regular.FindStringSubmatch(str)
   fmt.Println(match[1]) // 张三~男~18~程序猿

   info := strings.Split(match[1], "~") // 根据~把字符串转成切片
   fmt.Println(info)                    // [张三 男 18 程序猿]

   fmt.Printf("俺叫%+v%+v),今年%+v岁,职业是%+v\n", info[0], info[1], info[2], info[3])
   // 俺叫张三(男),今年18岁,职业是程序猿。

   //==========================================================//
   //========================= 例子② =========================//
   //==========================================================//

   str = "20060102150405" // 没有用-和:隔开的时间日期字符串
   regular = regexp.MustCompile("(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})")
   match = regular.FindStringSubmatch(str)
   fmt.Println(match) // [20060102150405 2006 01 02 15 04 05]

   yyyy := match[1]
   mm := match[2]
   dd := match[3]
   hh := match[4]
   ii := match[5]
   ss := match[6]
   fmt.Printf("%s-%s-%s %s:%s:%s \n", yyyy, mm, dd, hh, ii, ss) // 2006-01-02 15:04:05
}

Copyright © 2024 码农人生. All Rights Reserved