如何按组和向后引用删除冒号:)

问题描述

我有Cancelled Tx Time 10:07 和正则表达式这样的简单文本要检索 - 只是 10 07(空格可以),并且我有以下带有反向引用的正则表达式

/(Cancelled Tx Time\s(?<ValueCD>.*))(?<CF>\k<ValueCD>.*[^:])/gm 

我得到的是10:07

任何反馈我做错了什么?

解决方法

你的正则表达式很好。

冒号是匹配的一部分,也是捕获该字符串部分的组值的一部分,您可以在获得匹配后将其删除。

你可以使用

Cancelled Tx Time\s+(.*)

参见regex demo。 匹配后,在 Group 1 值上使用类似 Replace(":","") 的内容。

另一种方法是使用正则表达式替换操作

Cancelled Tx Time\s+(\d+):(\d+)

作为正则表达式和 $1 $2 (\1 \2) 作为替换模式。见this regex demo

(\d+):(\d+) 部分将两组数字捕获到 ID 为 1 和 2 的单独组中,替换中的反向引用将这些值连接在一起。