### 正则表达精髓版知识点解析 #### 一、正则表达式的概念与作用 正则表达式(Regular Expression)是一种强大的文本处理工具,在搜索、替换、校验文本字符串方面有着广泛的应用。它通过一系列简单的代码来匹配字符串中的字符组合。 #### 二、基本符号介绍 1. **重复符号**: - `*` (零次或多次重复) - `+` (一次或多次重复) - `?` (零次或一次重复) 2. **限定词**: - `{n}` (恰好重复n次) - `{n,}` (至少重复n次) - `{n,m}` (至少重复n次,最多重复m次) 3. **分组**:使用圆括号 `()` 来创建一个捕获组,可以对整个组进行重复操作。 4. **转义字符**:某些特殊字符如 `\`, `.` 需要用反斜杠 `\` 进行转义。 5. **字符类**:用方括号 `[ ]` 表示一组字符中的任意一个。 6. **位置锚点**: - `^` 开头锚点 - `$` 结尾锚点 7. **选择符**:使用 `|` 符号表示“或”的关系。 #### 三、案例分析 1. **基本重复操作**: - `"abc*"` 匹配字符串 `a` 后面跟着零个或多个 `bc`。 - 示例:`a`, `abc`, `abcbc`, `abcbcbcbcbcbcb` 2. **具体重复次数**: - `"abc{2}"` 匹配字符串 `a` 后面跟着恰好两个 `bc`。 - 示例:`abcbc` 3. **范围内的重复次数**: - `"abc{2,}"` 匹配字符串 `a` 后面跟着至少两个 `bc`。 - 示例:`abcbc`, `abcbcbc`, `abcbcbcbcb` 4. **精确范围内的重复次数**: - `"abc{3,5}"` 匹配字符串 `a` 后面跟着3到5个 `bc`。 - 示例:`abcbcbc`, `abcbcbcbc`, `abcbcbcbcbc` 5. **分组的重复**: - `"a(bc)*"` 匹配字符串 `a` 后面跟着零个或多个 `bc` 组合。 - 示例:`a`, `abc`, `abcbc` 6. **限定次数的分组**: - `"a(bc){1,5}"` 匹配字符串 `a` 后面跟着1到5个 `bc` 组合。 - 示例:`abc`, `abcbcbc`, `abcbcbcbc` 7. **复杂分组**: - `"a(b%c)*c"` 其中 `%` 代表任意字符。该表达式匹配字符串 `a` 后面跟着零个或多个 `b` 和任意一个字符组成的组合,最后以 `c` 结束。 - 示例:`ac`, `abbc`, `abxcbc` 8. **转义字符**: - `"hi%hello"` 其中 `%` 代表任意字符。该表达式匹配字符串 `hi` 后面跟着一个任意字符,再跟着 `hello`。 - 示例:`hihello`, `hibhello`, `hicello` 9. **特殊字符类**: - `"[abc]"` 匹配 `a`, `b`, 或 `c`。 - 示例:`a`, `b`, `c` 10. **位置锚点**: - `"^abc$"` 匹配整个字符串为 `abc` 的情况。 - 示例:`abc` 11. **选择符**: - `"abc|def"` 匹配 `abc` 或 `def`。 - 示例:`abc`, `def` #### 四、实战技巧 1. **理解基本符号的意义**:掌握 `*`, `+`, `?`, `{n}`, `{n,}`, `{n,m}` 等符号的含义是学习正则表达式的基础。 2. **熟练运用分组和限定词**:通过使用括号进行分组,并结合 `{n}`, `{n,}`, `{n,m}` 对分组进行重复操作,可以实现更复杂的匹配需求。 3. **合理利用位置锚点**:使用 `^` 和 `$` 来限定匹配的位置,确保正则表达式只匹配符合要求的字符串。 4. **掌握字符类和选择符**:通过 `[ ]` 和 `|` 来匹配多种可能的情况,增强正则表达式的灵活性。 #### 五、进阶技巧 1. **非贪婪模式**:在使用 `{n,m}` 或 `*`, `+` 时,可以在后面加上 `?` 来表示非贪婪模式,即尽可能少地匹配字符。 2. **负向前瞻和负向后瞻**:利用 `(?!pattern)` 和 `(?!pattern)` 来指定不希望匹配的模式,从而排除不符合条件的部分。 3. **正向前瞻和正向后瞻**:使用 `(?=pattern)` 和 `(?<=pattern)` 来指定必须匹配的模式,即使它们不是实际被匹配的部分。 4. **条件匹配**:利用 `(?(name)yes-pattern|no-pattern)` 来根据之前定义的条件进行不同的匹配。 通过以上知识点的学习,我们可以更加深入地理解和应用正则表达式,提高我们的编程效率和代码质量。正则表达式的魅力在于其简洁而强大的表达能力,掌握这些基本技巧将极大地提升我们在文本处理方面的技能水平。
开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明
"^The": 开头一定要有"The"字符串;
"of despair$": 结尾一定要有"of despair" 的字符串;
那么,
"^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配
"notice": 匹配包含notice的字符串
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边
接着,说说 '*', '+',和 '?',
他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:
"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1}, 这里是一些例子:
"ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串.
要点, '*', '+',和 '?'只管它前面那个字符.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb").
现在我们把一定几个字符放到小括号里,比如:
"a(bc)*": 匹配 a 后面跟0个或者一个"bc";
"a(bc){1,5}": 一个到5个 "bc."
还有一个字符 '│', 相当于OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a│b)*c": 匹配含有这样多个(包括0个)a或b,后面跟一个c
的字符串;
一个点('.')可以代表所有的单一字符,不包括"\n"
如果,要匹配包括"\n"在内的所有单个字符,怎么办?
对了,用'[\n.]'这种模式.
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目