使用字母和数字

时间:2018-03-06 19:18:54

标签: regex oracle sed regex-group regexp-replace

我有一个逗号分隔文件,我需要更改第一列删除字符串中的前导零。文本文件如下

ABC-0001,ab,0001

ABC-0010,bc,0010

我需要在

下获取数据
ABC-1,ab,0001   

ABC-10,bc,0010

我可以执行命令行替换,我尝试如下:

sed  's/ABC-0*[1-9]/ABC-[1-9]/g' file    

我最终得到了输出:

ABC-[1-9],ab,0001

ABC-[1-9]0,ac,0010
你能告诉我这里缺少的东西吗?

或者,我也尝试在生成此文件的SQL中应用格式,如下所示:

select regexp_replace(key,'((0+)|1-9|0+)','(1-9|0+)') from file  where key in ('ABC-0001','ABC-0010')  

,输出为

ABC-(1-9|0+)1
ABC-(1-9|0+)1(1-9|0+)    

任何一种解决方案的帮助都会非常有用!

2 个答案:

答案 0 :(得分:3)

试试这个:

var a = ["one", "two", "three"];
 console.log(a.indexOf("two")); // output = 1

 a.indexOf = function(val) {
  return 'HAHAHA';
};

console.log(a.indexOf("two")); // output = 'HAHAHA'

答案 1 :(得分:2)

要在使用Oracle的查询中执行此操作,其中带有要删除的零的键值位于名为“file”的表中名为“key”的列中,如下所示:

select regexp_replace(key, '(-)(0+)(.*)', '\1\3')
from file;

你需要捕捉破折号,因为它在匹配时由正则表达式“消耗”。接下来是第二组一个或多个0,然后是其余的字段。替换为捕获的组1和3,将0(如果有)保留在out。

之间