doulu4534 2014-10-16 22:43
浏览 113
已采纳

Golang正则表达式无法匹配字节10

Try the following:

func main(){
    r := regexp.MustCompile(`(.)`)
    for i := 0; i < 255; i++{
        d := []byte{byte(i)}
        all := r.FindAll(d, -1)
        fmt.Println(all)
    }
}

The wildcard cannot match byte 10 (ie the new line character). Looks like a bug. I suppose regex was never really meant to work with []byte, but golang offers the []byte functions, so this is kind of an oversight.

  • 写回答

1条回答 默认 最新

  • donglvlao8367 2014-10-16 22:47
    关注

    You need to tell it to match against new lines .. by specifying the s flag:

    r := regexp.MustCompile(`(?s)(.)`)
    

    Try it in the playground: http://play.golang.org/p/MK-UECa9AV

    The s flag tells the parser to let . match a new line.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序