概念
使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
使用场景
- 批量提取/替换有规律的字符串
- 在各种高级的文本编辑器中使用
- 在各类办公软件中使用
- 在各种开发语言中使用(java/C#/JS/PHP等)
- 用户输入的合法性验证(IP地址,特殊的订单号)
- 模板引擎(CMS系统等)的标签库开发
- 网络爬虫(抓取机器人)的开发
- 批量的文本高效处理
正则表达式的测试工具
- 推荐RegexBuddy http://www.regexbuddy.com/
- RegExBuilder
- 在线测试工具 http://tool.oschina.net/regex/
最简单的正则表达式
- * 匹配前面的子表达式任意次 (如zo*能匹配“z”,也能匹配“zo”以及“zoo”)
- ? 匹配前面的子表达式零次或一次
- . 匹配除“
”之外的任意字符(回车符(
)和换行符(
)),它指定前边的内容可以连续重复使用任意次以使整个表达式得到匹配,因此,. 连在一起就意味着任意数量的不包含换行的字符。现在 hi.*Lucy 的意思就很明显了:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。
- w 匹配任何一个字母(不区分大小写)、数字、下划线,等价于[0-9a-zA-Z_]
- W 匹配任何一个非字母数字和下划线,等价于[^0-9a-zA-Z_]
- s 匹配任何一个空白字符
- d 匹配任何一个数字
0d{2}-d{8} 这里 d 后面的 {2}({8}) 的意思是前面 d 必须连续重复匹配2次(8次)。
- 匹配一个单词边界,也就是指单词和空格间的位置(单词的开始或结束)
-
^ 匹配字符串的开始
- % 匹配字符串的结束