A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hehe04 中级黑马   /  2012-8-29 19:45  /  2276 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.什么是正则表达式?
正则表达式(Regular Expression)也叫匹配模式(pattern),用来检验字符串是否满足特定规则,或从字符串中捕获满足特定规则的子串。

2.字符匹配
最简单的正则表达式由普通字符和通配符组成。比如“Romm\d\d\d”这样的正则表达式。其中,Room是普通字符,而/d是通配符,表示该位置上有一个数字。
正则表达式难读难写,容易出错,可以使用“Regex Tester”工具进行测试。


3.通配符
通配符说明
\d匹配数字0-9
\w匹配单词字符,包括小写字母a-z,大写字母A-Z,数字0-9,和下划线。
\s匹配任何空白字符,包括空格,制表符,换页符等(即匹配\n,\f,\t,\v以及空格)
\D匹配任何非数字字符
\W匹配任何非单词字符
\S匹配任何非空白字符
.匹配除换行符(\n)之外的任何字符
这些特殊字符在正则表达式中称为元字。要表达元字本身,就必须使用转义字符例如:符号"."在正则表达式中是元字,要想表达"."本身(假如我想匹配www.baidu.com)需要使用他的转义字符"\.",同样要表达"\"本身,需要使用它的转义字符"\\


4.与正则表达式相关的类

.net提供了一系列与正则表达式相关的类,它们都位于System.Text.RegularExpressions命名空间。其中最常用的是Regex类。
Regex类的部分方法
名称说明
IsMatch()检验能否在字符串中找到和正则表达式匹配的子串
Match()获取字符串中与正则表达式匹配的第一个子串
NextMatch()获取下一个匹配的子串
Matches()获取字符串中所有与正则表达式匹配的子串
Replace()用指定的字符串替换原字符串中与正则表达式匹配的子串,相当于word中的替换功能。
Split()找出与正则表达式匹配的子串,并以这些子串为“分割标记”拆分字符串。
通过Regex.Matches()方法,可以从给定的字符串中分解出所有与正则表达式匹配的子串,这些子串可以保存在一个MatchCollection型集合中,每个子串都被看作Match类的对象。

5.可选字符集

除了通配符外,还可以把某个位置上允许出现的字符写在[ ]内,组成可选字符集,例如:
  • [abc]  表示该位置可以出现a,b,c中的任意一个字母
  • [A-D]  表示该位置可以出现字母A,B,C,D
  • [A-DM-P]  表示该位置可以出现A到D或者M-P中的任意一个字母
  • [A-Da-d]  表示该位置可以出现A-D或者a-d中的任意一个字母
  • [12]  表示该位置可以出现数字1或者数字2
  • [1-5] 表示该位置可以出现1-5
  • [0-47-9] 表示该位置可以出现0-4或者7-9
  • [\s\S] 表示该位置可以出现任何字符,包括空格,制表符,换行等。
反向字符集
在[ ]中括号中用"^"符号表示非。例如:
  • [^c]  表示除c以外的所有字符
  • [^abc]  表示除abc以外的任何字符
  • [^0-9]  匹配除0-9以外的所有字符。
  • [^#]  匹配除#以外的所有字符
  • [^\n]  匹配除换行符以外的所有字符
在正则表达式中,"[ ]"是有特殊含义的,如果我们想匹配“[ ]”本身,就要使用转义字符"\[\]",同理,[ ]括号中的"-"也是一样,需要这样写[\-]
6.或匹配

在正则表达式中使用"|"表示“或”例如:


  • "x|y"           表示x或y
  • good|ok;    表示good或者ok
  • (tr|b)ee       表示tree或者bee
  • th(i|a)nk      表示think或者thank
  • book one|two  表示book one或者book two
  • book (one|two)  表示book one  或者book two


7.数量限定符



限定符说明
*将前面的字符重复0次或多次
+将前面的字符重复1次或多次
?将前面的字符重复0次或1次
{n}将前面的字符重复n遍
{n,}将前面的字符至少重复n遍,即n遍或更多
{n,m}将前面的字符重复n至m遍
*?将前面的字符重复0次或多次,尽量少的重复
+?将前面的字符重复1次或多次,尽量少的重复
??将前面的字符重复0到1次,尽量少的重复
{n}?将前面的字符重复n遍,尽量少的重复,等效于{n}
{n,}?将前面的字符至少重复n遍,尽量少的重复。
{n,m}?将前面的字符重复n至m遍,尽量少的重复。

*在正则表达式中有特殊含义,要想表达*本身要使用转义字符\*
“?”用法还不是很理解,什么是尽可能少匹配??        ”{n,}?“是否也等价于“{n}”




PS:花了差不多整一天时间整理的,管理员多给点分吧。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

2 个回复

倒序浏览
值得收藏和学习!
回复 使用道具 举报
管理员可以考虑加分哦,支持这样的知识贴。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马