当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 问个正则表达式的问题
帖子发表于 : 2007-06-24 9:03 

注册: 2006-11-04 19:56
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
我想把一个数据中的所有日期,格式为20070624
按五天为一个周期分段,并修改
比如说把20070624修改为20070620,20070626修改为20070630
应该怎么写呢

thx : :D


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-06-24 9:17 
头像

注册: 2007-03-01 21:04
帖子: 283
地址: 福建
送出感谢: 0 次
接收感谢: 0 次
一定要正则表达式吗?按整数来处理,用一个if判断就可以了,或者用mod(取模)来计算。
2007???[0-4]
2007???[5-9]


_________________
Feisty/Athlon1800+/512M/80G/MX440/SIS746
Linux 不是Windows
www.pendriverlinux.com
www.puppyos.com


最后由 aqua203 编辑于 2007-06-24 9:20,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-06-24 9:19 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
20070624 -> 20070620
20070626 -> 20070630 ?

例子不够详细,请问:
20070601 -> ?
20070605 -> ?
20070610 -> ?
20070625 -> ?
20070630 -> ?

MySQL :
concat(substr(date,1,6), floor(substr(date,7) / 5) ) ?

PHP
substr($date,0,6) . floor(substr($date,6) / 5) ?


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-06-24 9:34 

注册: 2006-11-04 19:56
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
补充一下
结尾日期
[0-4]-》5
[11-14]-》15
[21-24]-》25
[6-9]-》10
[16-19]-》20
[26-29]-》下个月1号


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-06-24 9:40 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
小孩:不要太懒。
这个是初一数学吧。
学会自己解决。

至于编程语句:2/3楼均可。


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-06-24 9:58 
头像

注册: 2007-05-06 8:19
帖子: 7433
送出感谢: 0 次
接收感谢: 4
人家问的是正则表达式(的问题),不是问如何解决计算问题。

鄙视那种回答不了问题,但是另出主意(改方案)的人;就是出主意也要加个“btw”才好啊。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-06-24 10:02 

注册: 2006-01-10 19:09
帖子: 1334
送出感谢: 0 次
接收感谢: 0 次
搞笑来 这么简单的问题自己实现不是更好 授人与鱼不如授人与渔


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-06-24 10:11 

注册: 2006-11-04 19:56
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
我只是想问下正则表达使怎么写。。。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-06-24 14:05 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
引用:
人家问的是正则表达式(的问题),不是问如何解决计算问题。
鄙视那种回答不了问题,但是另出主意(改方案)的人;就是出主意也要加个“btw”才好啊。


你没有骂我吧?我是常常不知“已经被人骂”的人了。如果恼了您,我诚心检讨,态度真的是:认真的哦!

1。本人没有上过中文的“电脑课”。所以不明白“正则表达”为何物啦。
2。楼主未说明:用何种“程式语言“表达。

所以,我们只能说说大概的拉。

另外: "btw" 是什么?不过不要紧,世界上几乎所有的事情,俺多不明白的。

引用:
php function: 苯方法:
function d2d($str)
{
$ym = substr($str,0,6);
$dd = substr($str,6,2)+0;
if ($dd<6) return $ym."05";
if ($dd<11) return $ym."10";
if ($dd<16) return $ym."15";
if ($dd<21) return $ym."20";
if ($dd<26) return $ym."25";
$next_month = strtotime("+10 day",mktime(0,0,0,substr($ym,4),1,substr($ym,0,4)));
return date("Ym",$next_month)."01";
}


MySQL:

引用:
update your_table set datecol =
if(substring(datecol,7,2)<6,concat(substring(datecol,1,6),'05'),
if (substring(datecol,7,2)<11,concat(substring(datecol,1,6),'10'),
if (substring(datecol,7,2)<16,concat(substring(datecol,1,6),'15'),
if (substring(datecol,7,2)<21,concat(substring(datecol,1,6),'20'),
if (substring(datecol,7,2)<26,concat(substring(datecol,1,6),'25'),
date_format(date_add(datecol,interval 10 days),'%Y%m01')
))))


不知可用否?


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-06-24 14:12 
头像

注册: 2006-11-24 11:00
帖子: 194
地址: 太阳系第3行星
送出感谢: 0 次
接收感谢: 0 次
蛋壳羊 写道:
我只是想问下正则表达使怎么写。。。


这个有判段性的,用正则做不到

正则是一种用来代替描述范围或语法规则的表示法,并不是什么程序代码,它没有逻辑性(无可推理)和计算能力(没有任何数值计算)。。
通俗点说,正则是告诉操作方符合条件的范围。。
强制性的执行就只能是 [0-4]、[11-14] 这样分组,因为上面说过它不具计算能力

非要用程序算法,逻辑上就是

对日期增加(mysql: date_add / mssql: dateadd)一个差数,其差数就从 5- 数%5 计算出(数%5 表示 数/5 的余数)

上面说的只是一个设计时算法
因为楼主的这种复杂情况是不具逻辑性的,因为还有逻辑外的31号 怎么办 2月的28号 怎么办

所以正常情况下,在项目设计时,是将该日期转为数字型(原理上是从某个日期开始经过了多少天),然后 (数+5-1)/5 取整*5 来实现每5一分类 <- 这个算法其实就是”奸商“用的0舍5入法


_________________
要爱护linux 就象爱护我们的庄稼地一样


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-06-24 21:57 

注册: 2006-11-04 19:56
帖子: 113
送出感谢: 0 次
接收感谢: 0 次
正在做数学建模的东西
文本文档里的数据很不好处理
以前只是知道一点正则表达式在这方面很强,所以就想能不能用正则表达式来解决
听了arll的解释现在清晰多了

下午的时候已经用C作出来了:)

谢谢大家

特别是arll的耐心讲解,对正则表达式总算有了一个正确的概念

也谢谢sqlfm,从你的回帖能看出来你是一个很有性格也很好的人,呵呵


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译