我的朋友他们就像具有特定格式的ummm文件名应该写成第一年(YY)然后是月(MM)然后是连续数字(SEQ)并存储在数据库中我必须检查所有文件是同年和同月存在......
我正在使用正则表达式来捕捉这些部分以检查这个概念......并感谢您的帮助 我正在使用where子句来过滤记录然后我使用substr来捕捉这些我告诉过你的部分,所以查询会是这样的......
Select substr(column_name1,4,4),substr(column_name1,0,2),substr(column_name1,2,2),
into seqvar,yearvar,dayvar
from table1
where regex_like (FILENAME,'(CDR-)([1-9][0-9]{0,3})(_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{4}_UK1\.FCDR)
这样做的最好的方法和最快的方法吗?
或使用类似于regex的ins子句在哪里cluase更好?
请您对该案件的所有意见
答案 0 :(得分:0)
如果您只想要提到的部分/组,请使用:
`/\((.*?)\)/`
在你的萤火虫中试试这个
var str = 'CDR-([1-9][0-9]{0,3})_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{4}_UK1\.FCDR';
var res = /\((.*?)\)/.exec(str);
console.log(res[1]);
将输出:[1-9][0-9]{0,3}
如果您想要([1-9][0-9]{0,3})
使用:/(\(.*?\))/
答案 1 :(得分:0)
由于oracle不支持前瞻,可能更容易使用REGEXP_REPLACE
可能看起来像这样:
select regexp_replace(FILENAME, '(CDR-)([1-9][0-9]{0,3})(_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{4}_UK1\.FCDR)', '\2')
from ....