),若在正则表达式中直接用“.”或者“*”,就会出现问题,因此它们会被解释成别的意思。怎么破?使用转义符“\”来取消这些字符的特殊意义。因此,正则表达式应该写成“\.”或者“\*”。由于“\”是转义符,所以要查找“\”本身,得用“\\”。例6:“deerchao\.net”匹配deerchao.net;“C:\\Windows”匹配C:\Windows。1.5 正则表达式的重复前面我们已经接触过几个重复匹配的方式了,如:“*”,“+”,“{2}”,“{5,12}”。下表是正则表达式中所有的限定符:表2. 常用的限定符* 重复零次或更多次+ 重复一次或更多次? 重复零次或一次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次例7:“Windows\d+”匹配Windows后面跟1个或更多数字;“^\w+”匹配一行的第一个单词或整个字符串的第一个单词;“\d+”匹配1个或更多连续的数字(注意:这里的“+”是和“*”类似的元字符,不同的是“*”匹配重复任意次(可以是0次),而“+”匹配重复1次或更多次);“\b\w{6}\b”匹配6个字符的单词。
1.6 正则表达式查找字符要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a, e, i, o, u),怎么破?So easy! 你只需要在方括号里列出它们就行了,正则表达式“[aeiou]”就可以匹配任何一个英文元音字母,“[.?!]”匹配标点符号(. 或? 或!)。举一反三,我们也可以轻松地指定一个字符范围,像“[0-9]”代表的含意与“\d”就是完全一致的,表示匹配一位数字;同理“[a-z0-9A-Z_]”也完全等同于“\w”(如果只考虑英文的话)。例8:正则表达式:“\(?0\d{2}[) -]?\d{8}”。该表达式可以匹配几种格式的电话号码,像(010)88886666,022-22334455,02912345678等。我们对它进行一些分析吧:首先是一个转义字符“\(?”,表示( 能出现0次或1次;然后是一个0;后面跟着2个数字(“\d{2}”);“[) -]?”表示“)”或“-”或“空格”中的一个,出现1次或不出现;最后是8个数字(“\d{8}”)。1.7 正则表达式的反义有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:表3. 常用的反义代码\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x] 匹配除了x以外的任意字符[^aeiou] 匹配除了aeiou这几个字母以外的任意字符例9:“\S+”匹配不包含空白符的字符串;“<a[^>]+>”匹配用尖括号括起来的以a

You've reached the end of your free preview.
Want to read all 15 pages?
- Fall '18
- Zhiqiang Jiang
- matlab, Numerical Analysis