正则表达式是什么?
听起来很高端大气上档次,事实上它只是一种规则。如果没人实现这些规则它就什么都不是,就好比数学家弄了一堆数学模型还有算法但是还是要程序猿写程序实现。因此正则表达式就是类似这个数学模型,我们负责写“模型”就好。因为各大编程语言已经帮我们写好了使用模型的函数。
正则表达式怎么用?
这里推荐一个网址:
http://regexpal.isbadguy.com/ 用于检测正则表达式是否写对了
1.直接书写要匹配的字符串
比如我们要查询:word那么他的正则表达式就是word。
这里还有一个要注意的是如果我们要匹配汉字或者特殊字符最好转换为unicode编码比如:匹配元木偶可以写成\u5143\u6728\u5076,否则目标字符串的编码方式会影响匹配结果。比如gbk的汉字匹配utf-8的汉字肯定是不能匹配的。
在线转unicode编码我推荐一个:http://tool.chinaz.com/Tools/Unicode.aspx
2.^$[]\.*+|?() 这些正则运算符就要在前面加个\
3.不可见符号匹配
Tab水平制表符\t
换行符\n
空格就是它本身
4.元字符
| | 类似或 |
[] | 匹配任意一个 |
[^] | 只要出现就不匹配同[]相反 |
例子:
- ok|first 只要字符串出现ok或者first就可以匹配
- [ab]只要字符串出现a或b就可以匹配
- 这两个很类似,只不过[]只能匹配单个字符。如果写成[first]它意思是只要出现f、i、r、s、t都可以匹配。
- [^]同[]功能相反,[^ab]匹配除了a或b的所有字符。
- [1-5]匹配1到5任意一个
- [a-z]匹配a到z任意一个
5.字符集合
. | 匹配除换行符任意一个 |
\d | 匹配数字 |
\D | 同\d相反匹配除数字以外所有字符 |
\w | 匹配任意一个字母、数字、下划线 |
\W |
同\w相反 |
\s | 匹配所有不可见符号(\n \t \r \f \a) |
\S | 同\s相反 |
6.贪婪模式和懒惰模式(u/U)
贪婪模式是匹配更多字符串,懒惰是匹配最少字符串。默认通常是贪婪模式如果要使用懒惰模式需要在正则表达式后面加U
如:'/正则表达式/U'。贪婪模式是小写的u;