\u6b63\u5219\u8868\u8fbe\u5f0f\u4e0d\u8981\u80cc.md - \u6b63\u5219\u8868\u8fbe\u5f0f\u4e0d\u8981\u80cc \u6b63\u5219\u8868\u8fbe\u5f0f\u5230\u5e95\u662f\u4ec0\u4e48 \u6b63\u5219\u8868\u8fbe\u5f0f(Regular Expression

u6b63u5219u8868u8fbeu5f0fu4e0du8981u80cc.md -...

This preview shows page 1 - 3 out of 6 pages.

# 正则表达式不要背 ## 正则表达式到底是什么 正则表达式 (Regular Expression) 其实就是一门工具, ** 目的 ** 是为了字符串模式匹配,从而实现搜 索和替换功能。它起源于上个 20 世纪 50 年代科学家在数学领域做的一些研究工作,后来才被引入到计算 机领域中。从它的命名我们可以知道,它是一种 ** 用来描述规则的表达式 ** 。而它的底层原理也十分简单, 就是使用状态机的思想进行模式匹配。大家可以利用 [regexper.com](? target=https%3A%2F%2Fregexper.com%2F) 这个工具很好地可视化自己写的正则表达式 : `/\d\w+/` 这个正则生成的状态机图 : ![](? imageView2/0/w/1280/h/960/format/webp/ignore-error/1) 对于具体的算法实现,大家如果感兴趣可以阅读《算法导论》。 ## 从字符出发 我们学习一个系统化的知识,一定要从其基础构成来了解。正则表达式的基本 ** 组成元素 ** 可以分为: ** 符和元字符 ** 。字符很好理解,就是基础的计算机字符编码,通常正则表达式里面使用的就是数字、英文字 母。而元字符,也被称为特殊字符,是一些用来表示特殊语义的字符。如 ^ 表示非 ,| 表示或等。利用这些 元字符,才能构造出强大的表达式模式 (pattern) 。接下来,我们就来从这些基本单位出发,来学习一下如 何构建正则表达式。 ### 单个字符 最简单的正则表达式可以由简单的数字和字母组成,没有特殊的语义,纯粹就是一一对应的关系。如想 'apple' 这个单词里找到‘ a' 这个字符,就直接用 `/a/` 这个正则就可以了。 但是如果想要匹配特殊字符的话,就得请出我们第一个元字符 **`\`** , 它是转义字符字符,顾名思义,就 是让其后续的字符失去其本来的含义。举个例子: 我想匹配 `*` 这个符号,由于 `*` 这个符号本身是个特殊字符,所以我要利用转义元字符 `\` 来让它失去其本 来的含义: ``` js /\*/ ``` 如果本来这个字符不是特殊字符,使用转义符号就会让它拥有特殊的含义。我们常常需要匹配一些特殊字符, 比如空格,制表符,回车,换行等 , 而这些就需要我们使用转义字符来匹配。为了便于记忆,我整理了下面 这个表格,并附上记忆方式: | 特殊字符 | 正则表达式 | 记忆方式 | | --- | --- | --- | | 换行符 | \n | **n**ew line | | 换页符 | \f | **f**orm feed | | 回车符 | \r | **r**eturn | | 空白符 | \s | **s**pace | | 制表符 | \t | **t**ab | | 垂直制表符 | \v | **v**ertical tab | | 回退符 | [\b] | **b**ackspace, 之所以使用 [] 符号是避免和 \ b 重复 | ### 多个字符 单个字符的映射关系是一对一的,即正则表达式的被用来筛选匹配的字符只有一个。而这显然是不够的,只要
Image of page 1
引入集合区间和通配符的方式就可以实现一对多的匹配了。 在正则表达式里,集合的定义方式是使用中括号 `[` `]` 。如 `/[123]/` 这个正则就能同时匹配 1,2,3
Image of page 2
Image of page 3

You've reached the end of your free preview.

Want to read all 6 pages?

  • Winter '18

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture