当前位置:  技术问答>linux和unix

急,用正则表达式匹配日期的问题??万分感谢!

    来源: 互联网  发布时间:2016-03-27

    本文导语:  小弟在用C++写一个能够提取出url和文本中包含的日期的程序,但是使用正则表达式总也匹配不出满意的结果。 由于日期形式多种多样,现在用 “[0-9]\{4\}[^0-9]\{0,3\}[0-9]\{2\}[^0-9]\{0,3\}[0-9]\{2\}[^0-9]” 能够匹配出类似 20...

小弟在用C++写一个能够提取出url和文本中包含的日期的程序,但是使用正则表达式总也匹配不出满意的结果。

由于日期形式多种多样,现在用

“[0-9]\{4\}[^0-9]\{0,3\}[0-9]\{2\}[^0-9]\{0,3\}[0-9]\{2\}[^0-9]”

能够匹配出类似 20080619,2008-06-19,2008年06月19日 等几种比较标准的形式,但是像 080619, 2008619, 08619,2008-6-19等这种不是很标准的形式就无法匹配了,不知道哪位达人能指点一下,万分感谢!

|
#!/bin/sh
format_date () {
    # check argument
    [ -z $1 ] && echo "usage: format_date " && return
    line="$@"

    # format line
echo $line
    line=$(echo $line | sed 's/[^0-9]+/ /g')
echo $line
    line=$(echo $line | sed 's/ ([0-9]) / 01 /g')
echo $line
    line=$(echo $line | sed 's/^([0-9]) /01 /g')
echo $line
    line=$(echo $line | sed 's/ ([0-9])$/ 01/g')
echo $line
    line=$(echo $line | sed 's/ +//g')
echo $line
    length=$(echo -n $line | wc -c)

    if [ $length -eq 8 ] ; then
        # format YYYY-MM-DD 00:00:00
        year=$(echo $line | cut -c 1-4)
        month=$(echo $line | cut -c 5-6)
        day=$(echo $line | cut -c 7-8)
        echo "$year-$month-$day 00:00:00"
    elif [ $length -eq 14 ] ; then
        # format YYYY-MM-DD HH:MM:SS
        year=$(echo $line | cut -c 1-4)
        month=$(echo $line | cut -c 5-6)
        day=$(echo $line | cut -c 7-8)
        hour=$(echo $line | cut -c 9-10)
        min=$(echo $line | cut -c 11-12)
        second=$(echo $line | cut -c 13-14)
        echo "$year-$month-$day $hour:$min:$second"
    else
        echo "Invalid date string: $@"
    fi
}


format_date 2008/2/5
format_date 2008/02/25
format_date 2008/2/25 22:33:44
format_date 2008/2/25 22:3:4
format_date 20080225
format_date 20080225223344


前段时间别人写的,可以参考一下。

|
08619

对应可能产成歧义的,不大好办。

比如08111

你解释成1月11号呢,还是11月1号?

|
对于可能有歧义的地方,不需要匹配。

|

    
 
 

您可能感兴趣的文章:

  • Perl 正则表达式之角色化记忆
  • js正则表达式之RegExp对象之compile方法 编译正则表达式
  • Linux c++ boost库正则表达式用法
  • 正则表达式 表示 非指定字符串开头的正则
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 正则表达式问题,使用正则表达式找出指定字符串并替换?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 正则表达式概述 什么是正则表达式 .
  • JS 正则表达式的相关方法(正则学习笔记1)
  • jQuery中的正则表达式分析 正则基础
  • java 正则表达式基础,实例学习资料收集大全 原创
  • 哪些命令可以使用正则表达式
  • 常用正则表达式及评注-学习正则必备
  • (菜鸟飞飞)问个正则表达式的问题
  • 向大家推荐一个收集整理正则表达式的网站
  • 正则表达式的问题
  • 关于正则表达式匹配问题
  • Python 匹配任意字符(包括换行符)的正则表达式写法
  • php 正则 不包含某字符串的正则表达式
  • Java正则表达式 reb4j
  • 大虾,请问谁有正则表达式的资料?谢谢!
  • 正则匹配后面非指定字符的正则 原创
  • shell 正则匹配问题 反向匹配 负匹配
  • 帮忙看看这个shell脚本,用正则匹配字符串为什么匹配不上
  • 正则表达式匹配
  • php正则表达式中的非贪婪模式匹配
  • JS:一个匹配日期的正则
  • c#匹配整数和小数的正则表达式
  • 正则式如何只匹配一个汉字?
  • 关于正则表达式的匹配
  • 一个匹配形如“#100”的正则表达式
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c#正则过滤图片标签 asp.net正则过滤的例子
  • java使用正则表达校验手机号码示例(手机号码正则)
  • PHP html标签正则替换并可自定义正则规则
  • python正则表达式去掉数字中的逗号(python正则匹配逗号)
  • 正则表达式口诀_学习正则的朋友值得一看
  • Javascript里的两种使用正则的方法
  • 常用正则 常用的C#正则表达式
  • 寻求正则表达试
  • 学习IP地址的正则表达式
  • asp.net正则表达式提取中文的代码示例
  • 正则表达式中使用变量赋值
  • 用正则表达式来表示中文
  • java正则表达式验证函数
  • linux下有什么函数可以处理正则表达式?
  • emacs里空行的正则表达式如何写?
  • 正则式 ^[^ ](.*[^ ])?$ 的含义
  • 关于sed的正则表达式
  • 正则表达式小疑问
  • php 正则 不包含某字符串的正则表达式 iis7站长之家
  • 询问一个关于正则表达式的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3