# 正则表达式 (Regular Exp)
Hint: 之前自己整理的笔记不完整, 2022.07.17 根据 code sheep 的在线文档 https://r2coding.com/#/README?id=%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f 整合更新。
## ▲ 基础正则表达式速查表 (特殊字符)
==需要把此块笔记当前仓库的 `正则表达式-特殊字符.md` 文档整合,还未完成==
### 字符
| **表达式** | **描述** | 示例 |
| ---------- | ------------------------------------------------------------ | :----------------------------------------------------------- |
| `[abc]` | 字符集。匹配集合中所含的任一字符。 | |
| `[^abc]` | 否定字符集。匹配任何不在集合中的字符。 | |
| `[a-z]` | 字符范围。匹配指定范围内的任意字符。 | |
| `.` | 匹配除换行符以外的任何单个字符。 | |
| `\` | (1) 转义字符。作为转意,即通常在 `\`后面的字符不按原来的意义解释。<br />(2) 也可以将其后的 `特殊字符`转译为字面量。 | (1) `/b/` -- 匹配字符 "b", 当 b 前面加了反斜杆后 `/\b/` 转意为匹配一个单词的边界.<br/>(2) 模式 `/a*/` 代表会匹配 0 个或者多个 a. 相反, 模式 `/a\*/` 将 `*`的特殊性移除从而可以匹配像 `a*` 这样的字符串.<br/> |
| `\w` | 匹配任何字母数字,包括下划线(等价于`[A-Za-z0-9_]`)。 | |
| `\W` | 匹配任何非字母数字(等价于`[^A-Za-z0-9_]`)。 | |
| `\d` | 数字。匹配任何数字。 | |
| `\D` | 非数字。匹配任何非数字字符。 | |
| `\s` | 空白。匹配任何空白字符,包括空格、制表符等。 | |
| `\S` | 非空白。匹配任何非空白字符。 | |
### 分组和引用
| **表达式** | **描述** |
| ---------------- | ------------------------------------------------------------ |
| `(expression)` | 分组。匹配括号里的整个表达式。 |
| `(?:expression)` | 非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 |
| `\num` | 对前面所匹配分组的引用。比如`(\d)\1`可以匹配两个相同的数字,`(Code)(Sheep)\1\2`则可以匹配`CodeSheepCodeSheep`。 |
### 锚点/边界
| **表达式** | **描述** | 示例 |
| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `^` | 匹配字符串或行开头。<br />匹配字符串的开始位置。 如果设置了多行修饰符(`m`),也匹配 `\n` 或 `\r` 之后的位置. | e.g.: `/^a/` -- 匹配 "an A",而不匹配 "An a".<br>e.g.: `(^|&)` -- `^`匹配以字符串开头, `&` 就是 `&` 字符, `(^|&)` 匹配字符串开头或者`&`字符, 如果其后还有正则, 那么必须出现在字符串开始或`&`字符之后. |
| `$` | 匹配字符串或行结尾。<br />匹配字符串的结束位置。 如果设置了多行修饰符(`m`),也匹配 `\n` 或 `\r` 之前的位置. | e.g.: `/a$/` 匹配"An a",而不匹配"an A". |
| `\b` | 匹配(一个)单词边界。 | 比如:`Sheep\b`可以匹配`CodeSheep`末尾的`Sheep`,不能匹配`CodeSheepCode`中的`Sheep` |
| `\B` | 匹配一个单词的非边界位置 | 比如:`Code\B`可以匹配`HelloCodeSheep`中的`Code`,不能匹配`HelloCode`中的`Code`。 |
### 数量表示
| **表达式** | **描述** |
| ---------- | ------------------------------------------ |
| `?` | 匹配前面的表达式0个或1个。即表示可选项。 |
| `+` | 匹配前面的表达式至少1个。 |
| `*` | 匹配前面的表达式0个或多个。 |
| `|` | 或运算符。并集,可以匹配符号前后的表达式。 |
| `{m}` | 匹配前面的表达式m个。 |
| `{m,}` | 匹配前面的表达式最少m个。 |
| `{m,n}` | 匹配前面的表达式最少m个,最多n个。 |
### 预查断言
| **表达式** | **描述** |
| ---------- | ------------------------------------------------------------ |
| `(?=)` | 正向预查。比如`Code(?=Sheep)`能匹配`CodeSheep`中的`Code`,但不能匹配`CodePig`中的`Code`。 |
| `(?!)` | 正向否定预查。比如`Code(?!Sheep)`不能匹配`CodeSheep`中的`Code`,但能匹配`CodePig`中的`Code`。 |
| `(?<=)` | 反向预查。比如`(?<=Code)Sheep`能匹配`CodeSheep`中的`Sheep`,但不能匹配`ReadSheep`中的`Sheep`。 |
| `(?<!)` | 反向否定预查。比如`(?<!Code)Sheep`不能匹配`CodeSheep`中的`Sheep`,但能匹配`ReadSheep`中的`Sheep`。 |
### 特殊标志
| **表达式** | **描述** |
| ---------- | --------------------------------------- |
| `/.../i` | 忽略大小写。 |
| `/.../g` | 全局匹配。 |
| `/.../m` | 多行(Multiline)修饰符。用于多行匹配。 |
## ▲ 正则表达式可视化工具
> https://jex.im/regulex/
> https://regex101.com/
## ▲ VSCode 中使用正则表达式给 markdown 文档中内添加空格
### (1) 给中文和英文中间添加空格
![image-20220602120237714](./README.assets/ME.assets/image-20220602120237714.png)
### (2) 在数字前添加空格
![image-20220828163140573](./README.assets/image-20220828163140573.png)
### (3) 给数字和英文字母前添加空格
![image-20220602120237714](./README.assets/image-20220602120237714.png)
正则表达式的讲解见:`Github-clone/DataStructure-Algorithm-Learning/正则表达式/正则表达式-特殊字符.md`
### (4) 给一些特定格式的文字添加统一后缀
![image-20221108093239148](./README.assets/image-20221108093239148.png)
### (5) 把中文后面的空格替换为逗号
![image-20230601205318185](./README.assets/image-20230601205318185.png)
## ▲ 常用正则表达式示例
### 数字校验
| **描述** | **正则表达式** | **备注** |
| -------------- | ------------------------------------------------- | --------------------------- |
| 数字 | `^[0-9]*$` | |
| n位数字 | `^\d{n}$` | |
| 至少n位数字 | `^\d{n,}$` | |
| m~n位数字 | `^\d{m,n}$` | |
| 整数 | `^(-?[1-9]\d*)$
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
数据结构是计算机存储、组织数据的方式,它涉及到数据的逻辑结构、物理结构以及对数据的基本操作。数据结构的选择会影响到程序的效率、可读性和可维护性。常见的数据结构有数组、链表、栈、队列、树、图等。 算法则是解决特定问题的步骤,是对数据运算和操作的详细描述。算法的设计和选择会直接影响到程序的效率,因此,在设计和选择算法时,需要考虑到时间复杂度、空间复杂度等因素。 在实际应用中,数据结构和算法常常是密不可分的。通过对数据结构的理解和运用,以及对算法的学习和研究,可以帮助我们更有效地解决实际问题,提升编程能力。
资源推荐
资源详情
资源评论
收起资源包目录
Data Structure and Algorithm Learning —— 数据结构与算法学习笔记.zip (471个子文件)
.DS_Store 12KB
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
1571058086-2f2efaa5d836c53.gif 120KB
1571058089-9dc343f38cab361.gif 95KB
1571058086-bfe2bca74c3a547.gif 73KB
广度优先搜索算法的动画.gif 32KB
.gitignore 18B
index.html 16KB
04-hash-table-linear-probing.html 14KB
12.4.1-breadth-first-search.html 12KB
chapter05-队列.html 10KB
02-avl-tree.html 9KB
03-hash-table-separate-chaining.html 8KB
chapter06-链表.html 8KB
02-散列表-HashTable.html 8KB
01-linked-list.html 7KB
02-doubly-linked-list.html 7KB
greatest-common-divisor.html 7KB
03-red-black-tree.html 6KB
chapter04-栈.html 6KB
12.4.2-depth-first-search.html 6KB
12.3.3-graph.html 6KB
01-binary-search-tree.html 6KB
01-字典-Dictionary.html 5KB
01-mini-heap.html 5KB
04_merge-sort.html 5KB
表单数字添加空格.html 4KB
chapter07-集合.html 4KB
04-sorted-linked-list.html 4KB
13.2.3_interpolation-search.html 4KB
06_counting-sort.html 4KB
05_quick-sort.html 3KB
03-circular-linked-list.html 3KB
chapter03.html 3KB
13.2.2_binary-search.html 3KB
02_selection-sort.html 2KB
03_insertion-sort.html 2KB
01_bubble-sort.html 2KB
one-dimensional-polynomial.html 2KB
chapter09-递归.html 1KB
13.3-shuffle.html 572B
01-Stack.html 375B
index.html 356B
01-HelloWorld.html 299B
17-ES2015-ES6-Modules.html 252B
10-MatrixChainMultiplicationRecursive.html 245B
08-LongestCommonSubsequenceRecursive.html 244B
09-MatrixChainMultiplicationDP.html 238B
03-HashCollisionSeparateChaining.html 238B
13-IntroFunctionalProgramming.html 237B
07-LongestCommonSubsequenceDP.html 237B
05-KnapSackProblemRecursive.html 235B
04-HashCollisionLinearProbing.html 235B
06-KnapSackProblemGreedy.html 232B
03-MinCoinChangeGreedy.html 230B
04-KnapsackProblemDP.html 228B
03-DecimalToBinary.html 228B
03-CircularLinkedList.html 227B
02-MinCoinChangeDP.html 226B
01-DC-BinarySearch.html 226B
04-PalindromeChecker.html 226B
04-SortedLinkedList.html 225B
02-DoublyLinkedList.html 225B
05-StackLinkedList.html 224B
12-SudokuSolver.html 223B
05-Floyd-Warshall.html 223B
02-BalancedSymbols.html 223B
02-SetOperations.html 222B
01-Dictionaries.html 221B
01-UsingMinHeap.html 221B
02-UsingMaxHeap.html 221B
11-RatInMaze.html 220B
01-UsingGraphs.html 220B
01-LinkedList.html 219B
01-QuickSort.html 219B
01-BucketSort.html 219B
01-MergeSort.html 219B
01-SelectionSort.html 219B
01-InsertionSort.html 219B
01-CountingSort.html 219B
01-RadixSort.html 219B
01-BubbleSort.html 219B
02-HashTable.html 218B
03-HotPotato.html 218B
03-ES2015Set.html 218B
03-HeapSort.html 217B
04-Dijkstra.html 217B
04-TowerOfHanoi.html 217B
07-Kruskal.html 216B
02-Deque.html 214B
01-Queue.html 214B
06-Prim.html 213B
03-DFS.html 212B
02-BFS.html 212B
01-Set.html 212B
15-ES2015-ES6-EnhancedObjectProperties.html 208B
18-ES2016-ES7-ExponentiationOperator.html 205B
11-ES2015-ES6-variableScope.html 202B
共 471 条
- 1
- 2
- 3
- 4
- 5
资源评论
极致人生-010
- 粉丝: 2974
- 资源: 2825
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功