作者MOONRAKER (㊣直到天长!直到地老!)
看板Visual_Basic
标题Re: [VB6 ] 循序档和正规表示式
时间Wed Dec 31 13:43:07 2008
关於VB的正规表示式(regular expression; regexp; regex,都是同一个东西)
VB6不用看了,太单纯了,看help就差不多了 XD
但是.NET的正规表示式就已经提升到其他主要语言的水准
以下有一篇一流文件可以参考
黑暗执行绪BBS: 被遗忘的文字利器—探索.NET Regular Expression元件
http://blog.darkthread.net/files/folders/871/download.aspx
顺便贴一下里面列出的 .NET regex symbols
以後写到不会写还可以来这里翻 :P
1. 比对字串中如有用到. $ ^ { [ ( | ) * + ? \等字串,要记得用方括号
夹起来[]。
例如: 要比对NT$, 要写成NT[$]。
2. 比较常用的特殊字元有\r、\n、\t(Tab)等。
3. 最主要的比对符号如下:
. \n换行符号以外的所有字元,若设为Singleline模式,则代表
任何字元。
[aeiou] 表示方括号中的任一个字元均可以,此例表示a、e、i、o或u的
任一个字元均可。
[^aeiou] 表示这五个字元以外的任何字元均可。
[0-9a-fA-F] 若是相连的字元,可使用-连字线来表示,0-9就表示0,1,2,3,
4,5,6,7,8,9均可。
\w 所有的文数字,英文字母、中文字及数字再加上底线字元。
\W 和\w刚好相反,所有不是文数字的字元。
\s 所有的空白(white-space)字元,相当於空白、\f、\n、\r、
\t、\v等不会显现的字元。
\S 与\s相反,不属於\s的所有字元。
\d 所有的数字(0-9)。
\D 所有的非数字。
4. 比对时也可指定出现的位置,
^ 出现在字串的开头。(受Multiline选项影响)
$ 出现在字串的结尾。(受Multiline选项影响)
\A 出现在整个字串的开头。(不受Multiline选项影响)
\Z 出现在整个字串的结尾。(後方仍可接一个\n,不受Multiline
选项影响)
\z 出现在整个字串的结尾。(後方不可接任何字元,不受Multiline
选项影响)
注: 所谓Multiline选项,主要在字串中有换行符号时会发生差别,可在呼叫
函数时设定参数,而笔者则较常直接加在比对字串的前方(即所谓的inline
character)。例如: string sML="Item1 is a dog.\nItem2 is a cat.\n
Item3 is a mouse.\n"; MessageBox.Show(Regex.IsMatch(sML,"^Item2").
ToString()); MessageBox.Show(Regex.IsMatch(sML,"(?m)^Item2").
ToString()); 其中Inline Character (?m)就是启用了Multiline选项
,所以第一个测詴传回False,第二个则传回True,这个例子应该就可
以清楚的解释Multiline选项的影响。同时这里再补充两个常用的选项,
i=Ignore Case不分大小写,s=Single Line则决定.符号是否包含\n。
5. 比对符号可以指定出现的次数,如以下的说明:
* 出现0次或多次,相当於{0,}。
+ 出现1次以上,相当於{1,}。
? 出现0次或1次,相当於{0,1}。
{n} 出现正好n次。例如: (pizza){2} -> “pizzapizza”就符合比对。
{n,} 最少出现n次,例如: (abc){2,}.
{n,m} 最少出现n次,但不超过m次。
*? +? ?? {n}? {n,}? {n,m}?
当有多种符合的可能时,以最少数目的为准,例如: 比对”123ABC”
字串,如果用”\d*”可得123,若用”\d*?”则得到1,其余的
意义可类推。英文称为Lazy *, Lazy +, Lazy ?...
--
从前有个马铃薯王国 有个高贵伟大的国王
有的人尊敬他 有的人畏惧他 但有个人敢看不起他不只是一条龙
嘿呵 快出动 去征服 去摆平 嘿呵 快出征 去征服那条龙
嘿呵 快出动
(宰了它!轰了它!) 嘿呵 快出征 去征服那条龙
Potatoes and Dragons (C)Alphanim France 2004-05
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.168.228
1F:推 jacky59956:很谢谢你这篇好文章 01/06 13:00