正则表达式
regular expression regex RE
优势-简洁
例1:
- 'py'
- 'pyy'
- 'pyyy'
正则表达式 py+
例2
- 'pyabc'
- 'pykxyz'
正则表达式:py[^py]{0,10}
正则表达式
- 通用的字符串表达框架
- 简洁表达一组字符串的表达式
- 针对字符串表达“简洁”和“特征”思想的工具
- 判断某字符串的特征归属
应用:主要在字符串匹配中
- 表达文本的特征(病毒、入侵等)
- 同事查找或替换一组字符串
- 匹配字符串的全部或部分
- 编译:将符合正则表达式语法的字符串转换成正则表达式特征
正则表达式的常用操作符
- . 表示任何单个字符
- [] 字符集,对单个字符给出取值范围
- [^ ] 非字符集,对单个字符给出排除范围
- * 前一个字符0次或无限次扩展
- + 前一个字符1次或无限次扩展
- ? 前一个字符0次或1次扩展
- | 左右表达式任意一个
- {m} 扩展前一个字符m次
- {m,n} 扩展前一个字符m至n此(含n)
- ^ 匹配字符串开头
- $ 匹配字符串结尾
- () 分组标记,内部只能使用|操作符
- \d 数字,等价于[0-9]
- \w 单词字符,等价于[A-Za-z0-9]
例子
P(Y|YT|YTH|YTHO)?N: PN\PYN\PYTHN\PYTHON
PYTHON+: PYTHON\'PYTHONN'\PYTHONNN
PY[TH]ON:PYTON\PYHON
PY[^TH]?ON:PYON\PYaON\PYbON...
PY{:3}N:PN\PYN\PYYN\PYYYN
经典正则表达式
- ^[A-Za-z]+$ 由26个字母组成的字符串
- ^[A-Za-z0-9]+$ 由26个字母和数字组成的字符串
- ^-\d+$ 整数
- ^[0-9][1-9][0-9]$ 正整数
- [1-9]\d{5} 中国境内邮政编码,6位
- [\u4e00-\u9fa5] 匹配中文字符(utf-8)
- \d{3}-\d{8}|d{4}-\d{7} 国内电话号码,010-68913536
匹配IP地址的正则表达式:分4段,每段0-255
\d+.\d+.\d+.\d+
\d{1,3}.\d{1,3).\d{1,3}.\d{1,3}
精确写法
0-99:[1-9]?\d
100-199:1\d{2}
200-249:2[0-4]\d
250-255:25[0-5]
应该是
(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])