LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: emylekao

问几个正则表达式的问题,搞了半天不会写。

[复制链接]
发表于 2005-8-23 10:03:31 | 显示全部楼层
Post by welans
不是吧??你怎么匹配的?

日期要靠正则式严格过滤可能吗?像2月28/29/30日貌似是上下文相关的,或许这样的正则式根本不能写出来。
按楼主的意思就不要求全责备了。

只要字符串内部有内容与正则表达式相匹配就行了,如果要强制完全按照自己的正则表达式,应该表示出开始和结尾. ^ 表示以什么开始,$ 表示以什么结尾,好像是这个样子.
回复 支持 反对

使用道具 举报

发表于 2005-8-23 10:11:02 | 显示全部楼层
1、哦,明白你的意思了;正则式的含义本身是可以脱离语言(脚本)存在的,所以我给出的式子就不适合所有的语言环境。

2、日期(指2005-02-30之类)能否由正则式表示值得探讨,决定到理论版讨论去,欢迎高手指点
回复 支持 反对

使用道具 举报

发表于 2005-8-23 12:35:46 | 显示全部楼层
先定义 01-31 : ( (0[1-9]) | ([1-2]\d) | (3[0-1]) ) )
       01-30 : ( (0[1-9]) | ([1-2]\d) | 30 )
       01-29 : ( (0[1-9]) | ([1-2]\d) )
       01-28 : ( (0[1-9]) | ( (1\d) | (2[0-8]) )  )
      
月日就是这个样子的: ( 0[13578]-(01-31) ) | ( 1[02]-(01-31) ) | ( [469]-(01-30) ) | ( 02- ( (01-28) | (01-29) ) )

如果再加上年对2月份的影响,会更复杂,但是我想还是能表示出来的.

ps:以上只是一种表示,并非某个语言下的正则表达式的写法.
回复 支持 反对

使用道具 举报

发表于 2005-8-23 13:21:11 | 显示全部楼层
最好用 posix 的正则表达式来写,用字符类而不是 [0-9]
[[:digit:]]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表