【问题标题】:Regexp replacement string, what am I doing wrong?正则表达式替换字符串,我做错了什么?
【发布时间】:2021-09-20 17:28:13
【问题描述】:

我正在为 html 解析器构建一个简单的降价,但我无法让我的正则表达式替换工作。我做错了什么?

我尝试了多种不同的变体和谷歌搜索,但仍然无法使其正常工作。

降价:

# Hello World!

代码:

content, readErr := ioutil.ReadFile(markdownFile)
contentString := string(content)

h1 := regexp.MustCompile(`^#(.*)`)
contentHTML := h1.ReplaceAllStrings(contentString, `<h1>$1</h1>`)

fmt.Println(contentHTML)

预期输出:

<h1>Hello World!</h1>

实际输出:

</h1>Hello World!

我确定这是一个简单的错误,但我不知道如何获得我现在的输出。

【问题讨论】:

    标签: regex go


    【解决方案1】:

    当我修复 ReplaceAllString 方法时,它工作得很好:

    package main
    
    import (
        "fmt"
        "regexp"
    )
    
    func main() {
        contentString := "# Hello World!"
    
        h1 := regexp.MustCompile(`^#(.*)`)
        contentHTML := h1.ReplaceAllString(contentString, `<h1>$1</h1>`)
        fmt.Println(contentHTML)
    }
    

    打印:

    <h1> Hello World!</h1>
    

    See it on the playground

    注意事项:

    • 您的正则表达式捕获# 后面的空白,您可能并不真正想要。考虑将其更改为 ^#\s+(.*) 之类的内容。
    • 通常,使用正则表达式从一种格式转换为另一种格式很容易出错,并且可能导致代码非常复杂。对于一个简单的练习来说很好,但不要在生产中这样做:)

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 2022-07-27
      • 2018-07-13
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多