regex - 匹配时如何使一个词优先于其他词?

标签 regex go

我有以下列表。

ID    AllStatuses
1001  {failed|processing|success}
1002  {failed}
1003  {success|failed}
1004  {processing|success}
1005  {failed|processing}

我的需求是单独显示最乐观的状态。像这样

ID    Best Status
1001  success
1002  failed
1003  success
1004  success
1005  processing

有没有一种方法我可以用一个正则表达式查询来做到这一点,而不是说按顺序检查每个查询并返回我最坏的情况是三个正则表达式检查最终状态最乐观的状态?

最佳答案

正则表达式:\{.*(success).*|\{.*(processing).*|\{.*(failed).*替换:$1$2$3

Details :

  • .* 匹配任意字符零次或多次
  • () 捕获组
  • | 或者

Go 代码:

var re = regexp.MustCompile(`\{.*(success).*|\{.*(processing).*|\{.*(failed).*`)
s := re.ReplaceAllString(sample, `$1$2$3`)

输出:

ID    AllStatuses
1001  success
1002  failed
1003  success
1004  success
1005  processing

Code demo

关于regex - 匹配时如何使一个词优先于其他词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000832/

相关文章:

Java正则表达式替换字符和空行

regex - Perl 正则表达式 : replace all backslashes with double-backslashes

python - 用于解析简单英语定义的正则表达式示例

regex - 获取 Scala 中正则表达式匹配的索引

go - 有没有办法在不创建新的 goroutine 的情况下回调函数?

json - 在 Go 中,如何将 JSON 对象数组转换为具有默认值的结构数组?

Python 正则表达式查找两个字符对之间的所有子字符串

go - 如何在 macOS 上的 logrus/lumberjack 中自动重新创建日志文件

go - 获取退出代码 - Go

go - 在 go ( golang ) 中为 slice 结构赋值