我有这样一句话:
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}(.*)
非常感谢任何协助。
感谢。
答案 0 :(得分:1)
如果没有明确指出您的长期要求,我可以简单地匹配这样的示例:
A.*-\s
<强>输出强>
One Two Three Four Five Six
答案 1 :(得分:1)
完美,感谢您添加我要求的信息:)
尝试匹配:
ABC(?<!S\d{6} -).*S\d{6} -
替换为空字符串。
它是如何工作的?它符合以下内容:
ABC
SXXXXXX -
结尾,其中每个X
都是数字(\d
)。.*
SXXXXXX -
)
希望它有所帮助!
答案 2 :(得分:0)
这里有一个相当普遍的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