package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?: # 采用非捕获括号进行分组(非必要不使用捕获型括号)
```[\s\S]*?``` # 采用非贪婪匹配(必须),匹配0到n次空白或非空白字符(任意字符)
) # 结束第一个分支
| # 或符号
(?: # 同上,采用非捕获型括号
~~~[\s\S]*?~~~ # 同上,非贪婪匹配来匹配0到n次空白或非空白字符
) # 结束第二个分支`)
var str = `// 1. 匹配四个空格导出的代码块
functino(asfd)
safdsadf
safsadf
safdsdaf
// 2. 匹配三个反引号所引出的代码块
\`\`\`
func function(){
}
\`\`\`
这里是一些文本
……
………………
\`\`\` python
print("hello")
\`\`\`
// 3.如果四个空格之前的一行不是回车独占一行,则不会导出代码块(符合Markdown约定)
functino(asfd)
safdsadf
safsadf
safdsdaf
safd
// 4. 匹配三个波浪号导出的代码块
~~~
fmt.println(123)
~~~
// 5. 匹配前后四个及以上反引号导出的代码块
\`\`\`\`
aaa
\`\`\`
\`\`\`\`
这里是一些文本……
\`\`\`\`\`
print("this is a code block")
\`\`\`\`\`
// 6. 匹配前后四个及以上波浪号导出的代码块
~~~~
aaa
~~~
~~~~
这里是一些文本……
~~~~~~
print("this is a code block")
~~~~~~
`
var substitution = ""
fmt.Println(re.ReplaceAllString(str, substitution))
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/