正则匹配有效字符串

sxqinge 2015-11-24 08:53:13
我现在要读取一系列字符串,只有在当前日期的才给予匹配,否则就不读取,请问这个表达式如何配置呢?
样例数据(最后个下划线后面是日期):
result_20151121,
test1_20151123,
result_20151124,
test2_20151124,
result_20151125.
今天是2015年11月24日,是字符串中包含有'result'字符串,并且日期要在当天的才是有效字符串。比如result_20151124.
...全文
266 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxqinge 2015-12-05
  • 打赏
  • 举报
回复
可能各位没有明白我的意思,我是希望能有个正则表达式,匹配出目标字符串里出现的日期是不是当天的。。。 我已经找到了,正则表达式为: *_${system.job.prd.id,yyyyMMdd} 但是目前又有个新的需求,日期为英文格式的,这种方式就行不通了: 比如: test_05Dec2015 这个又该如何写正则匹配这个文件的日期是不是当天的呢?尝试了好几种办法,都行不通,请各位大侠不吝赐教,谢谢了。
z123zjf 2015-11-25
  • 打赏
  • 举报
回复
with t(str) as(select 'result_20151121' from dual union all select 'test1_20151123' from dual union all select 'result_20151124' from dual union all select 'test2_20151124' from dual union all select 'result_20151125' from dual) select * from t where regexp_like(str,'^result_2015(([13578]|10|12)([12]\d|3[01])|([469]|11|12)([12]\d|30)|2([01]\d|2[0-8]))$') 匹配的是result_开始,2015年的时间。 凑合一下。正则匹配日期上感觉好烦,如果是随意的日期,还要匹配闰年。要写好大一串。 不知道有没有好的方法写日期的正则
sxqinge 2015-11-24
  • 打赏
  • 举报
回复
你这个是匹配提取字符串……
我是希望有个正则,能识别我上述设定的符合要求的字符串
sxqinge 2015-11-24
  • 打赏
  • 举报
回复
谢谢回复。你这是SQL,不是正则吧?
z123zjf 2015-11-24
  • 打赏
  • 举报
回复
select regexp_replace('result_20151124','result[^[:digit:]]*([[:digit:]])[^[:digit:]]*','\1') from dual 正则可以根据字符串规则更改
卖水果的net 2015-11-24
  • 打赏
  • 举报
回复

-- 大概这样 ,没有环境

create table test (name varchar(30));

insert into test values('test1_20151121');
insert into test values('test2_20151123');
insert into test values('test3_20151124');
insert into test values('test4_20151124');
insert into test values('test5_20151125');
/
select * from test ;

select * from test where name like '%result%' || to_char(sysdate,'yyyymmdd');

drop table test ;


17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧