博文
日期正则表达式(2008-08-17 18:26:00)
摘要:
Title
Test Details Date With Slashes
Expression
^\d{1,2}\/\d{1,2}\/\d{4}$
Description
This regular expressions matches dates of the form XX/XX/YYYY where XX can be 1 or 2 digits long and YYYY is always 4 digits long.
Matches
4/1/2001 | 12/12/2001 | 55/5/3434
Non-Matches
1/1/01 | 12 Jan 01 | 1-1-2001
Expression
(^|\s|\()((([1-9]){1}|([0][1-9]){1}|([1][012]){1}){1}[\/-]((2[0-9]){1}|(3[01]){1}|([01][1-9]){1}|([1-9]){1}){1}[\/-](((19|20)([0-9][0-9]){1}|([0-9][0-9]){1})){1}(([\s|\)|:])|(^|\s|\()((([0-9]){1}|([0][1-9]){1}|([1][012]){1}){1}[\/-](([11-31]){1}|([01][1-9]){1}|([1-9]){1}){1}[\/-](((19|20)([0-9][0-9]){1}|([0-9][0-9]){1})){1}(([\s|\)|:|$|\>])){1}){1}){1}){1}
Description
Will match the following date formats: Preceded by a Space, Left-parentheses, or at the beginning of a line. Followed by a Space, Right-parentheses, or Colon(:), word boundary or End of line. Can have / or - as separator. Accepts 2 digit year 00-99 or ......
正则表达式举例-关于数字的(2008-08-17 18:05:00)
摘要:
Expression
^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$
Description
Tests for valid HTML hexadecimal color codes. The # symbol is optional. And it will except either the 3 digit form for the 216 Web safe colors, or the full 6 digit form. I am use it on my site to allow users to customize the site's colors.
Matches
#00ccff | #039 | ffffcc
Non-Matches
blue | 0x000000 | #ff000
Expression
\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b
Description
Most Concise RegExp for matching Decimal IPs. If nothing else, it'll make your code easier to read. (And I know that \d?\d is \d{1,2} but that's 2 extra characters.) --Update: darkone noticed 8 characters could be shaved down. I've edited it to reflect this. Thanks, darkone!
Matches
217.6.9.89 | 0.0.0.0 | 255.255.255.255
Non-Matches
256.0.0.0 | 0978.3.3.3 | 65.4t.54.3
Expression
^\d*\.?((25)|(50)|(5)|(75)|(0)|(00))?$
Description
This is......
上篇文章的补充(2008-08-17 17:39:00)
摘要:The vertical bar provides alternation in the whole group: ([0-9]*\.?[0-9]+|[0-9]+\.?[0-9]*) It would be easier to read like this; ( [0-9]*\.?[0-9]+ | [0-9]+\.?[0-9]* ) Get the idea?
Title: What is the porpouse of this part ?
Name: CV
Date: 10/24/2003 3:06:44 PM
Comment:
What is the porpouse of this part ? [0-9]+|[0-9]+ Can't it do the same with just [0-9]+ ? What is the difference ?
......
一个可以匹配整数、浮点数的正则表达式(2008-08-17 17:37:00)
摘要:^[+-]?([0-9]*\.?[0-9]+|[0-9]+\.?[0-9]*)([eE][+-]?[0-9]+)?$
Description
A regular expression that matches numbers. Integers or decimal numbers with or without the exponential form.
Matches
23 | -17.e23 | +.23e+2
Non-Matches
+.e2 | 23.17.5 | 10e2.0......
正则表达式基本语法列表(.NET)(2008-08-17 17:33:00)
摘要:
Metacharacters Defined
MChar
Definition
^
Start of a string.
$
End of a string.
.
Any character (except \n newline)
|
Alternation.
{...}
Explicit quantifier notation.
[...]
Explicit set of characters to match.
(...)
Logical grouping of part of an expression.
*
0 or more of previous expression.
+
1 or more of previous expression.
?
0 or 1 of previous expression; also forces minimal matching when an expression might match several strings within a search string.
\
Preceding one of the above, it makes it a literal instead of a special character. Preceding a special matching character, see below.
Metacharacter Examples
Pattern
Sample Matches
^abc
abc, abcdefg, abc123, ...
abc$
abc, endsinabc, 123abc, ...
a.c
abc, aac, acc, adc, aec, ...
bill|ted
ted, bill
ab{2}c
abbc
a[bB]c
abc, aBc
(abc){2}
abcabc
ab*c
ac, abc, abbc, abbbc, ...
ab+c
abc, abbc, abbbc, ...
ab?c
ac, abc
a\......
字符,字节和编码(2008-08-17 17:23:00)
摘要:字符,字节和编码
[原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/encoding.htm]
级别:中级
摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。举例说明了一些实际应用中,编码的实现方法。然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱码的办法。本文的内容涵盖了“中文问题”,“乱码问题”。
掌握编码问题的关键是正确地理解相关概念,编码所涉及的技术其实是很简单的。因此,阅读本文时需要慢读多想,多思考。
引言
“字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因,实际上由于底层代码本身有问题所导致的。因此,不仅是初学者会对字符编码感到模糊,有的底层开发人员同样对字符编码缺乏准确的理解。
回页首
1. 编码问题的由来,相关概念的理解
1.1 字符与编码的发展
从计算机对多国语言的支持角度看,大致可以分为三个阶段:
系统内码
说明
系统
阶段一
ASCII
计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。
英文 DOS
阶段二
ANSI编码
(本地化)
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
中文 DOS,中文 Windows 95/98,日文 Windows 95/98
阶段三
UNICODE
(国际化)
为了使国际间信息交......
正则表达式话题(2008-08-17 17:20:00)
摘要:[原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regtopic.htm]
引言
本文将逐步讨论一些正则表达式的使用话题。本文为本站基础篇之后的扩展,在阅读本文之前,建议先阅读正则表达式参考文档一文。
1. 表达式的递归匹配
有时候,我们需要用正则表达式来分析一个计算式中的括号配对情况。比如,使用表达式 "\( [^)]* \)" 或者 "\( .*? \)" 可以匹配一对小括号。但是如果括号 内还嵌有一层括号的话 ,如 "( ( ) )",则这种写法将不能够匹配正确,得到的结果是 "( ( )" 。类似情况的还有 HTML 中支持嵌套的标签如 "<font> </font>" 等。本节将要讨论的是,想办法把有嵌套的的成对括号或者成对标签匹配出来。
匹配未知层次的嵌套:
有的正则表达式引擎,专门针对这种嵌套提供了支持。并且在栈空间允许的情况下,能够支持任意未知层次的嵌套:比如 Perl,PHP,GRETA 等。在 PHP 和 GRETA 中,表达式中使用 "(?R)" 来表示嵌套部分。
匹配嵌套了未知层次的 "小括号对" 的表达式写法如下:"\( ([^()] | (?R))* \)"。
[Perl 和 PHP 的示例代码]
匹配有限层次的嵌套:
对于不支持嵌套的正则表达式引擎,只能通过一定的办法来匹配有限层次的嵌套。思路如下:
第一步,写一个不能支持嵌套的表达式:"\( [^()]* \)","<font>((?!</?font>).)*</font>"。 这两个表达式在匹配有嵌套的文本时,只匹配最内层。
第二步,写一个可匹配嵌套一层的表达式:"\( ([^()] | \( [^()]* \))* \)"。这个表达式在匹配嵌套层数大于一时,只能匹配最里面的两层,同时,这个表达式也能匹配没有嵌套的文本或者嵌套的最里层。
匹配嵌套一层的 "<font>" 标签,表达式为:"<font>((?!</?font>).|(<font>((?!</?font>).)*</font>))*&......
揭开正则表达式的神秘面纱(2008-08-17 17:19:00)
摘要:
揭开正则表达式的神秘面纱
关闭高亮
[原创文章,转载请保留或注明出处:http://www.regexlab.com/zh/regref.htm]
引言
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更强大。
正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。
文章中的每一个举例,都可以点击进入到测试页面进行测试。闲话少说,开始。
[ 点击下载 chm 版本] - DEELX 正则语法,包含其他高级语法的 chm 版本。
(注意:下载的 chm 版本适合用来查阅,而本文适合用来学习,建议继续阅读。)
1. 正则表达式规则
1.1 普通字符
字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)
举例2:表达式 "bcd",在匹......
80后必须会说的60句话(2008-08-05 20:07:00)
摘要:80后必须会说的60句话1、吃自助最高境界:扶墙进,扶墙出。
2、结婚必备条件:有车有房,父母双亡。
3、没有钱,没有权,再不对你好点,你能跟我?
4、拿份报纸上厕所,俺是读书人。
5、上Google上百度一下。
6、女人一定要对自己好一点。一旦累死了,就会有别的女人花你的钱,住你的房,睡你的老公,打你的娃!
7、你的丑和你的脸没有关系……
8、长个包子样,就别怨狗跟着。
9、争吵的时候,男人和女人的区别就像步枪和机关枪的区别。
10、爷爷都是从孙子走过来的……
11、老天,你让夏天和冬天同房了吧?生出这种鬼天气!
12、鸟大了什么林子都有!
13、听说女人如衣服,兄弟如手足。回想起来,咱这尊千手观音竟然裸奔了20多年!
14、不怕虎一样的敌人,就怕猪一样的队友。
15、夏天就是不好,穷的时候我连西北风都没得喝……
16、随你大小便!
17、怀才就像怀孕,时间久了才能让人看出来。
18、没什么事就不要找我,有事了更不要找我。
19、你以为我会眼睁睁地看着你去送死?我会闭上眼睛的。
20、锻炼肌肉,防止挨揍!
21、天使之所以会飞,是因为她们把自己看得很轻……
22、我想早恋,可是已经晚了……
23、拥抱真是个奇怪的东西,明明靠的那么近,却看不见彼此的脸。
24、揍你个性生活不能自理!
25、当你穿上爱情的婚纱,我也披上了和尚的袈裟……
26、其实我是一个天才,可惜天妒英才!
27、请你以后不要在我面前说英文了,OK?
28、思想有多远,你就给我滚多远!
29、男人的谎言可以骗女人一夜,女人的谎言可以骗男人一生!
30、好久没有人把牛皮吹的这么清新脱俗了!
31、老板,钱对你来说真的就那么重要吗?讲了三个多小时了一分钱都不降?
32、起那么早干嘛?夜总会还没开门呢!
33、一觉醒来,天都黑了。
34、我要是做了人事部经理,第一件事就是提拔自己做老总。
35、我每天除了吃饭的时间全在减肥,你还说我没有毅力?
36、水能载舟,亦能煮粥。
37、买了电脑不上宽带,就好比酒肉都准备好了却在吃饭......
正则表达式法计算字符串算术表达式2(vb2005)(2008-07-28 10:53:00)
摘要:接着昨天的内容继续学习。
8、"(?<pow1>" & num & ")\^ (?<pow2>" & num & ")
该表达式比较简单,是幂的运算。如字符串"123.123^3.32"就匹配该规则。程序中定义为
Const pow As String = "(?<pow1>" & num & ")\^(?<pow2>" & num & ")"
9、"(?<fone>(exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan|))\s*\((?<fone1>" & num & ")\)"
该表达式中,(?<fone>(exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan|))的意思是如果待处理的字符串中含有exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan的任意一个函数,则将其命名为fone;\s*\(的意思是上述的函数后须有一个左括号且括号左边可以有空白字符;((?<fone1>" & num & ")地意思是,如果待处理的字符串含有一个浮点数,则将其命名为fone1;最后的\)表示待处理的字符串须含有右括号。如字符串"sin(2.33)"、"cos (3)"就是一个匹配该规则的字符串。程序中定义为
Const fone As String = "(?<fone>(exp|log|log10|abs|sqr|sqrt|sin|cos|tan|asin|acos|atan|))\s*\((?<fone1>" & num & ")\)"
10、"(?<ftwo>(min|max)\s*)\((?<ftwo1>" & num & "),(?<ftwo2>" & num & ")\)"
这是一个处理比较两个浮点数大小的规则。如min(3,4)或max(3,4)就符合该规则。程序中定......