Regex 正则表达式提取关键字之间的所有字符
我有这样一句话:Regex 正则表达式提取关键字之间的所有字符,regex,Regex,我有这样一句话: One Two Three ABC CDE - 26/01/2014 18:37:42 - S123456 - Four Five Six 并希望删除以下内容: ABC CDE - dd/mm/yyyy hh:mm:ss - S123456 - 上述行始终包括ABC和S123456-(但S123456可能会更改,即S987654)。删除从ABC到最后一个-(破折号)的文本 因此,剩下的是: One Two Three Four Five Six 我从这开始,但它对我不起
One Two Three ABC CDE - 26/01/2014 18:37:42 - S123456 - Four Five Six
并希望删除以下内容:
ABC CDE - dd/mm/yyyy hh:mm:ss - S123456 -
上述行始终包括ABC和S123456-(但S123456可能会更改,即S987654)。删除从ABC到最后一个-(破折号)的文本
因此,剩下的是:
One Two Three Four Five Six
我从这开始,但它对我不起作用:
(?:.*?\s -\s){3}(.*)
如有任何帮助,我将不胜感激
谢谢。好吧,这是一个相当通用的RE
echo "One Two Three ABC CDE - 26/01/2014 18:37:42 - S123456 - Four Five Six" | sed -E 's/[A-Z]{3} [A-Z]{3} - .* - S[0-9]{6} - //'
One Two Three Four Five Six
如果没有明确说明您的长期需求,我可以简单地匹配以下示例:
One Two Three ABC CDE - 26/01/2014 18:37:42 - S123456 - Four Five Six
A.*-\s
输出
One Two Three Four Five Six
太好了,谢谢你添加我想要的信息:) 尝试匹配:
ABC(?<!S\d{6} -).*S\d{6} -
ABC(?)?
并替换为一个空字符串
它是如何工作的?它与以下内容相匹配:
- 以ABC开头
- 以
sxxxx-
结尾,其中每个X
都是一个数字(\d
)
- 包含除
sxxxx-
希望有帮助!我还不太清楚……您如何准确地识别要删除的字符串部分?它是否总是以ABC
开头,以456-
结尾?还是总是前面加3
,后面加4
?我想我们可以使用一些更具体的信息为了帮助您:)@ccjmne添加了更多信息thxGreat,谢谢!下面是我的回复,我只是在发布之前测试了一下,所以我很确定它工作得很好:)