如何从文本中提取自己想要的内容呢?可以通过正则表达式实现这一目的。
正则表达式的常用操作符
操作符 | 说明 | 示例 |
---|---|---|
. | 表示任意单个字符 | |
[ ] | 字符集,对单个字符给出取值范围 | [abc]表示a、b、c;[a-c]表示a到z的单个字符 |
[^ ] | 非字符集,对单个字符给出排除范围 | [abc]表示非a或非b非c |
* | 前一个字符0次或无限次扩展 | abc*表示ab、abc、abcc、… |
+ | 前一个字符1次或无限次扩展 | abc+表示abc、abcc、abccc、… |
? | 前一个字符0次或1次扩展 | abc?表示ab、abc |
| | 左右表达式任意一个 | ab|df表示ab、df |
{m} | 扩展前一个字符m次 | ab{2}c表示abbc |
{m,n} | 扩展前一个字符m至n次(包括n次) | ab{1,3}c表示abc、abbc、abbbc |
^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头 |
$ | 匹配字符串的结尾 | abc$表示abc且在一个字符串的结尾 |
( ) | 分组标记,内部只能使用 | 操作符 | (abc)表示abc,(ab|df)表示ab、df |
\d | 数字,等价于[0-9] | |
\w | 单词字符,等价于[A-Za-z0-9_] |
经典的正则表达式
^[A-Za-z]+$ | 由26个字母组成的字符串 |
---|---|
^[A-Za-z0-9]+$ | 由26个字母和数字组成的字符串 |
^-?\d+$ | 整数形式的字符串 |
^[0-9][1-9][0-9]$ | 正整数形式的字符串 |
[1-9]\d{5} | 中国境内邮政编码 |
[\u4e00-\u9fa5] | 匹配中文字符 |
\d{3}-\d{8}|d{4}-\d{7} | 国内固定电话号码 |
实际场景表达
1.物流单号
- 明确物流单号位数,如111111123444,有12位,可以表达为\d{12}
2.截取一段文本
- 从文本中截取自己想要的东西,如:中通快递:1234563456,只需要快递公司名称,可以表达为:.+(?=:)(即冒号前面的内容)。