我有以下列表。
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
关于regex - 匹配时如何使一个词优先于其他词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000832/