arrays - 获取特定格式的子字符串
问题描述
我有一个这种格式的字符串:
2002:4 2003:"\x02\x00\x04\x01" 2004:"\x00\x06\x03" 2005:1 2006:"YYYY-MM-DD" 3000:"Date time" 3001:"01/01/1900" 3002:"07/20/2020"
我只对值感兴趣3000:"Date time", 3001: "01/01/1900", 3002:"07/20/2020"
- 高于 3000 的值。最初,我尝试在空格处拆分字符串以获取不同的示例。但在这里,“日期时间”也有一个空格。所以在这种情况下我的逻辑就坏了。我是 Golang 的新手,所以我想知道在 Go 中执行此操作的最佳方法是什么?我可以尝试使用正则表达式还是一个坏主意?
解决方案
如果引号中的字符串3000:
从不包含其他双引号字符"
,则可以使用如下正则表达式:
30\d+:".*?"
一个更完整的 Go 代码片段(根据你的实际需要进行调整):
package main
import (
"fmt"
"regexp"
)
const s = `2002:4 2003:"\x02\x00\x04\x01" 2004:"\x00\x06\x03" 2005:1 2006:"YYYY-MM-DD" 3000:"Date time" 3001:"01/01/1900" 3002:"07/20/2020"
`
func main() {
re, err := regexp.Compile(`30\d+:".*?"`)
if err != nil {
panic(err)
}
matches := re.FindAllString(s, -1)
fmt.Println(matches) // [3000:"Date time" 3001:"01/01/1900" 3002:"07/20/2020"]
}
推荐阅读
- c++ - 如何将布尔值设置为 true 或 false 而不是 1 或 0?
- java - rJava jdk不一致
- javascript - 将元素从一个父级移动到另一个父级的反应动画
- sql-server - MSSQL 内连接计数分页
- c++ - 使用数组显式违反 C++ 中的类型系统?
- android - Android Kotlin 用按钮打开链接
- php - 命令行调用(开发用户)和浏览器请求(apache / www-data)之间的冲突
- mongodb - 如何检查列表中的值是否不为空并排除空列表情况?
- javascript - JavaScript 中的 JSON 解密 在 PHP 中加密
- python - Debian 上的 Python3:初始化时串行失败