学习正则(一)
来源:互联网 发布:java天气预报接口api 编辑:程序博客网 时间:2024/06/09 14:17
一、了解正则
正则表达式是一种处理文本的有用工具,通常用作数据检验、数据抓取等地。
二、正则语法
非显式限定符:
1、* 描述出现0或多次
2、+ 描述出现1或多次
3、?描述出现0或1次
显式限定符:
花括号{}及其中的数字表示
如a{2} 表示a出现2次;
如a{2,} 表示a出现2次以上;
如a{2,3} 表示a出现2次以上3次以下;
元字符:
*、?、+、{}...
^ 表示开始 ^a 表示以a字符开始
abc$ 表示以abc结束的字符串
/ 转义字符
|或
() 模式分组 (abc){2,} 表示abc出现2次以上的字符串
字符类:
a.最简单的字符类只不过是括号中的一个字符表,如 [aeiou] 表示a、e、i、o、u字母中的一个;
b.^在字符类中使用,表示否字此类,如否定连字符"-",则"-"必须为第二个字符,如 [^-][0-9]表示不匹配 -0、-1...
注意:
1、元字符在字符类中不做任何处理,所以不需要转义;
2、[a-z] -连字符是根据ascII或unicode表中的顺序来排列的;
3、不能使用字符类定义单词或模式,只能是单个字符
预定义的集合元字符(.net System.Text.RegularExpressions中提供)
/a 匹配铃声(警报);/u0007
/b 匹配字符类外的字边界,它匹配退格字符,/u0008
/t 匹配制表符,/u0009
/r 匹配回车符,/u000D
/w 匹配垂直制表符,/u000B
/f 匹配换页符,/u000C
/n 匹配新行,/u000A
/e 匹配转义符,/u001B
/040 匹配 3 位 8 进制 ASCII 字符。
/x20 使用 2 位 16 进制数匹配 ASCII 字符。
/cC 匹配 ASCII 控制字符,此例中是 ctrl-C。
/u0020 使用 4 位 16 进制数匹配 Unicode 字符。
/* 不代表预定义字符类的任意字符都只作为该字符本身对待。
/p{name}匹配已命名字符类“name”中的任意字符。支持名称是 Unicode 组和块范围。
/p{name}匹配已命名字符类“name”中不包括的文本。
/w 匹配任意单词字符。
/W /w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或
/s 任意空白区域字符。
/S 匹配任意非空白区域字符。
/d 匹配任意十进制数字。
/D 匹配任意非十进制数字。
参考(http://msdn.microsoft.com/zh-cn/library/ms972966.aspx)
后向引用:
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
如:/(url=(?<url>.*?)/)(?<name>.*?)/(/url/)
(url=http://soft.lexun.com/list_new.aspx?cd=0&lxt=0&pid=0&gid=0)最新(/url)|(url=http://soft.lexun.com/subjectinfo.aspx?id=330&p=2)必备(/url)
被保存到 url 与 name 中;
参考(http://deerchao.net/tutorials/regex/regex.htm#grouping)
零宽断言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
- 正则表达式学习一
- 正则表达式学习一
- 正则表达式学习(一)
- 学习正则(一)
- 正则学习一
- 正则表达式学习一
- 学习正则表达式【一】
- 正则表达式学习(一)
- 正则表达式学习(一)认识正则表达式
- 正则表达式学习笔记(一)
- 正则表达式学习(一)
- JS正则表达式学习(一)
- 学习正则表达式(一)
- 正则表达式学习(一)
- SQL学习(一)正则表达式
- 正则表达式学习笔记 一
- 正则表达式学习(一)
- 正则表达式学习(一)
- 新浪围脖开放平台五"string的替代品"
- USB枚举过程
- ubuntu-10.10中安装net-snmp-5.5
- poj1753 Flip Game
- D3DX Math (1): CPU Optimization
- 学习正则(一)
- Linux程序开发:QT中的多线程编程
- 学习正则(二)
- 学习正则(三)
- 设置MyEclipse编码方式
- CentOS中Cacti的安装过程
- 表变量与临时表使用注意
- swing 反射Annotation方式添加事件Listener
- java中Thread与Runnable的区别