Regex 使用正则表达式检索子字符串?

Regex 使用正则表达式检索子字符串?,regex,oracle,Regex,Oracle,我的朋友,他们就像有特定格式的ummm文件名一样,应该写上第一年(YY),然后是月份(MM),然后是序列号(SEQ),并存储在数据库中,我必须检查所有文件是否存在同一年和同一个月,所以 我用正则表达式捕捉这些部分来检查这个概念。。。谢谢你的帮助 我使用where子句来过滤记录,然后使用substr来捕获我告诉过你的这些部分,所以查询将是这样的 Select substr(column_name1,4,4),substr(column_name1,0,2),substr(column_name1,

我的朋友,他们就像有特定格式的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)
这样做是最好的方式和最快的方式吗

或者在哪里使用like子句代替正则表达式更好


请给出您对该案例的所有意见

如果您只想要您提到的零件/组,请使用以下方法:

`/\((.*?)\)/`
在你的萤火虫身上试试这个

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})这样的输出


用法:
/(\(.*?\)/

因为oracle不支持lookaheads,所以它可能会更容易使用

可能是这样的:

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 ....

你想要[1-9][0-9]{0,3}来自'CDR-([1-9][0-9]{0,3})\[0-9]{2}{[0-9]{2}{0-9]{4}{UK1\.FCDR'?对吗?我有大约150万条记录,我想从他们所有人那里得到那个部分,然后检查那个部分是否是顺序的,所以我不能具体说明变量包含什么OK,它将得到我所说的SEQ部分,但我真正需要的是将该部分保存在variable或其他位置,以使用该部分检查150万条记录是否按顺序排列,并从整个列表中获取缺失的数字。如何从列表中获取缺失的数字?我可能遗漏了一些内容,但1500000行如何具有4位序列?无论如何,为什么不能将值保存在变量中<代码>选择regexp。。。。从…输入您的_变量。但您也可以拥有序列号的另一个视图,并将其与查询连接起来