一文带你精通正则表达式:从入门到实战

友情提示:本文内容全部由银河易创(https://ai.eaigx.com)AI创作平台生成,仅供参考。请根据具体情况和需求进行适当的调整和验证。

正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,广泛应用于各种编程语言和文本编辑器中。无论是数据清洗、日志分析,还是表单验证,正则表达式都能大大提高我们的工作效率。本文将带你从基础概念到高级用法,全面掌握正则表达式的精髓。

1. 正则表达式基础

1.1 什么是正则表达式?

正则表达式是一种用于匹配字符串的模式。它由普通字符(如字母、数字)和特殊字符(称为元字符)组成,通过定义这些模式,我们可以快速查找、替换或提取文本中的特定内容。

1.2 基本语法

  • 普通字符:如 a1@ 等,直接匹配自身。
  • 元字符:具有特殊含义的字符,如 .*+? 等。

1.3 常用元字符

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • ?:匹配前面的字符零次或一次。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • []:匹配括号内的任意一个字符。
  • ():分组,用于捕获匹配的内容。

1.4 示例

  • a.b:匹配 a 和 b 之间有一个任意字符的字符串,如 aabacb
  • a*:匹配零个或多个 a,如 ""aaa
  • a+:匹配一个或多个 a,如 aaa
  • a?:匹配零个或一个 a,如 ""a
  • ^a:匹配以 a 开头的字符串。
  • a$:匹配以 a 结尾的字符串。
  • [abc]:匹配 ab 或 c
  • (abc):匹配 abc 并将其捕获为一个组。

2. 正则表达式进阶

2.1 量词

  • {n}:匹配前面的字符恰好 n 次。
  • {n,}:匹配前面的字符至少 n 次。
  • {n,m}:匹配前面的字符至少 n 次,至多 m 次。

2.2 字符类

  • \d:匹配任意数字,等价于 [0-9]
  • \D:匹配任意非数字字符。
  • \w:匹配任意字母、数字或下划线,等价于 [a-zA-Z0-9_]
  • \W:匹配任意非字母、数字或下划线的字符。
  • \s:匹配任意空白字符(包括空格、制表符、换行符等)。
  • \S:匹配任意非空白字符。

2.3 边界匹配

  • \b:匹配单词边界。
  • \B:匹配非单词边界。

2.4 分组与捕获

  • (pattern):捕获匹配的内容,可以通过 \1\2 等引用。
  • (?:pattern):非捕获分组,匹配但不捕获。

2.5 贪婪与懒惰

  • 默认情况下,量词是贪婪的,会尽可能多地匹配字符。
  • 在量词后加上 ? 可以使其变为懒惰模式,尽可能少地匹配字符。

2.6 示例

  • a{2}:匹配 aa
  • a{2,}:匹配至少两个 a,如 aaaaa
  • a{2,4}:匹配两到四个 a,如 aaaaaaaaa
  • \d{3}:匹配三个数字,如 123
  • \w+:匹配一个或多个字母、数字或下划线,如 abc123
  • \bword\b:匹配单词 word
  • (abc)\1:匹配 abcabc
  • a+?:懒惰模式,匹配 a 时尽可能少,如 a

3. 正则表达式实战

3.1 匹配邮箱地址

邮箱地址的格式通常为 username@domain.com,我们可以用以下正则表达式来匹配:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

解释

  • ^:匹配字符串的开头。
  • [a-zA-Z0-9._%+-]+:匹配用户名部分,允许字母、数字、点 .、下划线 _、百分号 %、加号 + 和减号 -
  • @:匹配邮箱地址中的 @ 符号。
  • [a-zA-Z0-9.-]+:匹配域名部分,允许字母、数字、点 . 和减号 -
  • \.:匹配域名中的点 .
  • [a-zA-Z]{2,}:匹配顶级域名(如 comorg),至少两个字母。
  • $:匹配字符串的结尾。

示例

  • 匹配:example@domain.comuser.name+tag@sub.domain.org
  • 不匹配:user@.comuser@domainuser@domain.c

3.2 匹配 URL

URL 的格式通常为 https://www.example.com/path,我们可以用以下正则表达式来匹配:

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

解释

  • ^:匹配字符串的开头。
  • (https?:\/\/)?:匹配 http:// 或 https://? 表示这部分是可选的。
  • ([\da-z\.-]+):匹配域名部分,允许数字、字母、点 . 和减号 -
  • \.([a-z\.]{2,6}):匹配顶级域名(如 comorg),长度为 2 到 6 个字母。
  • ([\/\w \.-]*)*:匹配路径部分,允许字母、数字、下划线 _、点 .、减号 - 和斜杠 /
  • \/?:匹配可选的结尾斜杠 /
  • $:匹配字符串的结尾。

示例

  • 匹配:https://www.example.comhttp://sub.domain.org/path/to/page
  • 不匹配:www.exampleftp://domain.com

3.3 匹配日期(YYYY-MM-DD)

日期的格式通常为 YYYY-MM-DD,我们可以用以下正则表达式来匹配:

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

解释

  • ^:匹配字符串的开头。
  • \d{4}:匹配四位数的年份(如 2023)。
  • -:匹配日期中的连字符 -
  • (0[1-9]|1[0-2]):匹配月份,01 到 12
  • -:匹配日期中的连字符 -
  • (0[1-9]|[12]\d|3[01]):匹配日期,01 到 31
  • $:匹配字符串的结尾。

示例

  • 匹配:2023-10-051999-12-31
  • 不匹配:2023-13-012023-02-30

3.4 提取 HTML 标签中的内容

假设我们想提取 HTML 标签中的文本内容,可以使用以下正则表达式:

<([a-z]+)>([^<]+)<\/\1>

解释

  • <([a-z]+)>:匹配开始标签,如 <p><div>
  • ([^<]+):匹配标签中的内容,[^<] 表示除 < 之外的任意字符。
  • <\/\1>:匹配结束标签,\1 表示引用第一个捕获组(即标签名)。

示例

  • 输入:<p>Hello, World!</p>
  • 匹配:<p>Hello, World!</p>,捕获内容为 Hello, World!

3.5 替换字符串中的空格

如果我们想将字符串中的空格替换为其他字符(如下划线 _),可以使用正则表达式结合替换功能来实现。正则表达式

\s+

解释

  • \s:匹配任意空白字符(包括空格、制表符、换行符等)。
  • +:匹配一个或多个空白字符。

替换为

_

示例

  • 输入:Hello World!
  • 替换后:Hello_World!

3.6 提取手机号码

手机号码的格式通常为 11 位数字,我们可以用以下正则表达式来匹配:

^1[3-9]\d{9}$

解释

  • ^:匹配字符串的开头。
  • 1:匹配手机号码的第一位数字 1
  • [3-9]:匹配第二位数字,范围为 3 到 9
  • \d{9}:匹配后面的 9 位数字。
  • $:匹配字符串的结尾。

示例

  • 匹配:1381234567819987654321
  • 不匹配:123456789011381234567

3.7 匹配 IP 地址

IP 地址的格式通常为 192.168.1.1,我们可以用以下正则表达式来匹配:

^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$

解释

  • ^:匹配字符串的开头。
  • (25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d):匹配 0 到 255 之间的数字。
    • 25[0-5]:匹配 250 到 255。
    • 2[0-4]\d:匹配 200 到 249。
    • 1\d{2}:匹配 100 到 199。
    • [1-9]?\d:匹配 0 到 99。
  • \.:匹配点 .
  • {3}:重复前面的模式 3 次。
  • $:匹配字符串的结尾。

示例

  • 匹配:192.168.1.110.0.0.1
  • 不匹配:256.1.1.1192.168.1

3.8 匹配中文

如果我们想匹配字符串中的中文字符,可以使用以下正则表达式:

[\u4e00-\u9fa5]

解释

  • \u4e00-\u9fa5:匹配 Unicode 范围内的中文字符。

示例

  • 输入:你好,世界!
  • 匹配:你好世界

3.9 匹配多行文本中的特定行

如果我们想匹配多行文本中以特定字符串开头的行,可以使用以下正则表达式:

^.*特定字符串.*$

解释

  • ^:匹配行的开头。
  • .*:匹配任意字符(零次或多次)。
  • 特定字符串:匹配目标字符串。
  • .*:匹配任意字符(零次或多次)。
  • $:匹配行的结尾。

示例

  • 输入:
    Hello, World!
    This is a test.
    Specific line starts here.
    
  • 匹配:Specific line starts here.

3.10 匹配 JSON 中的键值对

如果我们想匹配 JSON 中的键值对,可以使用以下正则表达式:

"(\w+)":\s*"([^"]*)"

解释

  • "(\w+)":匹配键名,\w+ 表示一个或多个字母、数字或下划线。
  • ::匹配冒号 :
  • \s*:匹配零个或多个空白字符。
  • "([^"]*)":匹配值,[^"]* 表示除 " 之外的任意字符。

示例

  • 输入:{"name": "John", "age": "30"}
  • 匹配:"name": "John" 和 "age": "30"

4. 正则表达式工具推荐

在学习和使用正则表达式的过程中,借助一些工具可以大大提高效率。以下是几款常用的正则表达式工具,帮助你快速测试、调试和优化正则表达式。


4.1 在线正则表达式测试工具

1. Regex101
  • 网址:regex101: build, test, and debug regex
  • 特点:
    • 支持多种编程语言的正则表达式语法(如 Python、JavaScript、PHP 等)。
    • 提供详细的匹配解释和调试信息。
    • 支持保存和分享正则表达式。
  • 适用场景:快速测试和调试正则表达式。
2. RegExr
  • 网址:https://regexr.com/
  • 特点:
    • 界面简洁,实时显示匹配结果。
    • 提供正则表达式语法参考和示例。
    • 支持保存正则表达式到本地。
  • 适用场景:学习和测试正则表达式。
3. Debuggex

4.2 编程语言中的正则表达式工具

1. Python - re 模块
  • Python 内置的正则表达式模块,功能强大且易于使用。
  • 示例:
    import re
    pattern = r'\d+'
    text = 'There are 123 apples and 456 oranges.'
    matches = re.findall(pattern, text)
    print(matches)  # 输出: ['123', '456']
    
2. JavaScript - RegExp 对象
  • JavaScript 中的正则表达式支持,适用于前端和后端开发。
  • 示例:
     
    const pattern = /\d+/g;
    const text = 'There are 123 apples and 456 oranges.';
    const matches = text.match(pattern);
    console.log(matches);  // 输出: ['123', '456']
    
3. Java - java.util.regex 包
  • Java 中的正则表达式工具,适用于复杂的文本处理。
  • 示例:
     
    import java.util.regex.*;
    public class Main {
        public static void main(String[] args) {
            String pattern = "\\d+";
            String text = "There are 123 apples and 456 oranges.";
            Pattern p = Pattern.compile(pattern);
            Matcher m = p.matcher(text);
            while (m.find()) {
                System.out.println(m.group());  // 输出: 123, 456
            }
        }
    }
    

4.3 文本编辑器中的正则表达式支持

1. VS Code
  • 支持正则表达式搜索和替换。
  • 快捷键:Ctrl+F(搜索)或 Ctrl+H(替换),勾选“使用正则表达式”。
  • 适用场景:在代码中快速查找和替换文本。
2. Sublime Text
  • 强大的正则表达式支持,支持多行匹配和批量替换。
  • 快捷键:Ctrl+F(搜索)或 Ctrl+H(替换),勾选“正则表达式”。
  • 适用场景:处理大型文本文件。
3. Notepad++
  • 支持正则表达式搜索和替换,界面简单易用。
  • 快捷键:Ctrl+F(搜索)或 Ctrl+H(替换),勾选“正则表达式”。
  • 适用场景:快速处理文本文件。

4.4 命令行工具

1. grep
  • Linux/Unix 系统中的文本搜索工具,支持正则表达式。
  • 示例:
     
    grep -E '\d+' file.txt
  • 适用场景:在文件中查找匹配的文本。
2. sed
  • 流编辑器,支持正则表达式替换。
  • 示例:
     
    sed -E 's/\d+/NUM/g' file.txt
  • 适用场景:批量替换文件中的文本。
3. awk
  • 强大的文本处理工具,支持正则表达式。
  • 示例:
     
    awk '/\d+/ {print}' file.txt
  • 适用场景:处理结构化文本数据。

5. 正则表达式的最佳实践

正则表达式虽然强大,但如果使用不当,可能会导致性能问题或难以维护的代码。以下是一些最佳实践,帮助你编写高效、可读性强的正则表达式。


5.1 保持简洁

  • 避免过度复杂化:正则表达式应尽量简洁,避免嵌套过多的量词和分组。复杂的正则表达式不仅难以理解,还可能影响性能。
  • 示例
    • 不推荐:^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$(匹配 IP 地址)
    • 推荐:如果可能,使用更简单的逻辑或分步验证。

5.2 使用非捕获分组

  • 减少不必要的捕获:如果不需要捕获分组中的内容,使用非捕获分组 (?:...) 可以提高性能。
  • 示例
    • 不推荐:(abc)|(def)(捕获两个分组)
    • 推荐:(?:abc)|(?:def)(不捕获分组)

5.3 避免贪婪匹配

  • 贪婪匹配的性能问题:默认情况下,量词是贪婪的,会尽可能多地匹配字符。在某些情况下,这可能导致性能问题。
  • 使用懒惰匹配:在量词后加上 ? 可以使其变为懒惰模式,尽可能少地匹配字符。
  • 示例
    • 贪婪匹配:<.*>(匹配 <div>content</div> 中的整个字符串)
    • 懒惰匹配:<.*?>(匹配 <div> 和 </div> 分别)

5.4 测试和验证

  • 全面测试:编写正则表达式后,使用多种测试用例验证其正确性,包括边界情况和异常输入。
  • 工具辅助:使用在线工具(如 Regex101)或编程语言的调试功能,检查正则表达式的匹配结果。

5.5 添加注释

  • 提高可读性:对于复杂的正则表达式,使用注释解释其逻辑。某些工具和编程语言支持在正则表达式中添加注释。
  • 示例(Python):
    pattern = r"""
        ^               # 匹配字符串开头
        \d{3}           # 匹配 3 位数字
        -               # 匹配连字符
        \d{2}           # 匹配 2 位数字
        $               # 匹配字符串结尾
    """
    

5.6 避免过度依赖正则表达式

  • 适合的场景:正则表达式适合处理模式固定的文本,但不适合处理复杂的逻辑或结构化数据(如 JSON、XML)。
  • 替代方案:对于复杂的数据处理,可以使用专门的解析工具(如 JSON 解析器、XML 解析器)。

5.7 性能优化

  • 减少回溯:避免使用可能导致大量回溯的模式,如嵌套量词或复杂的交替匹配。
  • 预编译正则表达式:在编程语言中,如果需要多次使用同一个正则表达式,可以预编译它以提高性能。
    • 示例(Python):
       
      import re
      pattern = re.compile(r'\d+')
      matches = pattern.findall('123 apples and 456 oranges')
      

6. 常见问题与解决方案

6.1 正则表达式不匹配

  • 可能原因
    • 模式错误:检查正则表达式的语法和逻辑。
    • 输入格式不符:确保输入文本符合预期格式。
  • 解决方案:使用工具逐步调试,检查模式和输入的匹配情况。

6.2 正则表达式性能差

  • 可能原因
    • 贪婪匹配:尝试使用懒惰匹配。
    • 复杂模式:简化正则表达式,或分步处理。
  • 解决方案:优化正则表达式,或使用其他文本处理方式。

6.3 正则表达式难以维护

  • 可能原因
    • 过于复杂:正则表达式嵌套过多,逻辑不清晰。
  • 解决方案:拆分正则表达式,或使用注释提高可读性。

7. 总结

正则表达式是一种强大的文本处理工具,掌握它可以大大提高工作效率。本文从基础语法到高级用法,再到实战技巧和最佳实践,全面介绍了正则表达式的核心知识。希望你能通过本文的学习,从正则表达式的入门者成长为精通者!

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言,我们一起探讨!

精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于有部分经验的读者... 6 检索文本文件:Egrep. 6 Egrep元字符... 8 行的起始和结束... 8 字符组... 9 用点号匹配任意字符... 11 多选结构... 13 忽略大小写... 14 单词分界符... 15 小结... 16 可选项元素... 17 其他量词:重复出现... 18 括号及反向引用... 20 神奇的转义... 22 基础知识拓展... 23 语言的差异... 23 正则表达式的目标... 23 更多的例子... 23 正则表达式术语汇总... 27 改进现状... 30 总结... 32 一家之言... 33 第2章:入门示例拓展.... 35 关于这些例子... 36 Perl简短入门... 37 使用正则表达式匹配文本... 38 向更实用的程序前进... 40 成功匹配的副作用... 40 错综复杂的正则表达式... 43 暂停片刻... 49 使用正则表达式修改文本... 50 例子:公函生成程序... 50 举例:修整股票价格... 51 自动的编辑操作... 53 处理邮件的小工具... 53 用环视功能为数值添加逗号... 59 Text-to-HTML转换... 67 回到单词重复问题... 77 第3章:正则表达式的特性和流派概览.... 83 在正则的世界中漫步... 85 正则表达式的起源... 85 最初印象... 91 正则表达式的注意事项和处理方式... 93 集成式处理... 94 程序式处理和面向对象式处理... 95 查找和替换... 98 其他语言中的查找和替换... 100 注意事项和处理方式:小结... 101 字符串,字符编码和匹配模式... 101 作为正则表达式的字符串... 101 字符编码... 105 正则模式和匹配模式... 110 常用的元字符和特性... 113 字符表示法... 115 字符组及相关结构... 118 锚点及其他“零长度断言” 129 注释和模式量词... 135 分组,捕获,条件判断和控制... 137 高级话题引导... 142 第4章:表达式的匹配原理.... 143 发动引擎... 143 两类引擎... 144 新的标准... 144 正则引擎的分类... 145 几句题外话... 146 测试引擎的类型... 146 匹配的基础... 147 关于范例... 147 规则1:优先选择最左端的匹配结果... 148 引擎的构造... 149 规则2:标准量词是匹配优先的... 151 表达式主导与文本主导... 153 NFA引擎:表达式主导... 153 DFA引擎:文本主导... 155 第一想法:比较NFA与DFA.. 156 回溯... 157 真实世界中的例子:面包屑... 158 回溯的两个要点... 159 备用状态... 159 回溯与匹配优先... 162 关于匹配优先和回溯的更多内容... 163 匹配优先的问题... 164 多字符“引文” 165 使用忽略优先量词... 166 匹配优先和忽略优先都期望获得匹配... 167 匹配优先、忽略优先和回溯的要旨... 168 占有优先量词和固化分组... 169 占有优先量词,?+、*+、++和{m,n}+. 172 环视的回溯... 173 多选结构也是匹配优先的吗... 174 发掘有序多选结构的价值... 175 NFA、DFA和POSIX.. 177 最左最长规则... 177 POSIX和最左最长规则... 178 速度和效率... 179 小结:NFA与DFA的比较... 180 总结... 183 第5章:正则表达式实用技巧.... 185 正则表达式的平衡法则... 186 若干简单的例子... 186 匹配连续行(续前)... 186 匹配IP地址... 187 处理文件名... 190 匹配对称的括号... 193 防备不期望的匹配... 194 匹配分隔符之内的文本... 196 了解数据,做出假设... 198 去除文本首尾的空白字符... 199 HTML相关范例... 200 匹配HTML Tag. 200 匹配HTML Link. 201 检查HTTP URL. 203 验证主机名... 203 在真实世界中提取URL. 206 扩展的例子... 208 保持数据的协调性... 209 解析CSV文件... 213 第6章:打造高效正则表达式.... 221 典型示例... 222 稍加修改——先迈最好使的腿... 223 效率vs准确性... 223 继续前进——限制匹配优先的作用范围... 225 实测... 226 全面考查回溯... 228 POSIX NFA需要更多处理... 229 无法匹配时必须进行的工作... 230 看清楚一点... 231 多选结构的代价可能很高... 231 性能测试... 232 理解测量对象... 234 PHP测试... 234 Java测试... 235 VB.NET测试... 237 Ruby测试... 238 Python测试... 238 Tcl测试... 239 常见优化措施... 240 有得必有失... 240 优化各有不同... 241 正则表达式的应用原理... 241 应用之前的优化措施... 242 通过传动装置进行优化... 246 优化正则表达式本身... 247 提高表达式速度的诀窍... 252 常识性优化... 254 将文字文本独立出来... 255 将锚点独立出来... 256 忽略优先还是匹配优先?具体情况具体分析... 256 拆分正则表达式... 257 模拟开头字符识别... 258 使用固化分组和占有优先量词... 259 主导引擎的匹配... 260 消除循环... 261 方法1:依据经验构建正则表达式... 262 真正的“消除循环”解法... 264 方法2:自顶向下的视角... 266 方法3:匹配主机名... 267 观察... 268 使用固化分组和占有优先量词... 268 简单的消除循环的例子... 270 消除C语言注释匹配的循环... 272 流畅运转的表达式... 277 引导匹配的工具... 277 引导良好的正则表达式速度很快... 279 完工... 281 总结:开动你的大脑... 281 第7章:Perl 283 作为语言组件的正则表达式... 285 Perl的长处... 286 Perl的短处... 286 Perl的正则流派... 286 正则运算符和正则文字... 288 正则文字的解析方式... 292 正则修饰符... 292 正则表达式相关的Perl教义... 293 表达式应用场合... 294 动态作用域及正则匹配效应... 295 匹配修改的特殊变量... 299 qr/…/运算符与regex对象... 303 构建和使用regex对象... 303 探究regex对象... 305 用regex对象提高效率... 306 Match运算符... 306 Match的正则运算元... 307 指定目标运算元... 308 Match运算符的不同用途... 309 迭代匹配:Scalar Context,不使用/g. 312 Match运算符与环境的关系... 316 Substitution运算符... 318 运算元replacement 319 /e修饰符... 319 应用场合与返回值... 321 Split运算符... 321 Split基础知识... 322 返回空元素... 324 Split中的特殊Regex运算元... 325 Split中捕获型括号的match运算元... 326 巧用Perl的专有特性... 326 用动态正则表达式结构匹配嵌套结构... 328 使用内嵌代码结构... 331 在内嵌代码结构中使用local函数... 335 关于内嵌代码和my变量的忠告... 338 使用内嵌代码匹配嵌套结构... 340 正则文字重载... 341 正则文字重载的问题... 344 模拟命名捕获... 344 效率... 347 办法不只一种... 348 表达式编译、/o修饰符、qr/···/和效率... 348 理解“原文”副本... 355 Study函数... 359 性能测试... 360 正则表达式调试信息... 361 结语... 363 第8章:Java. 365 Java的正则流派... 366 Java对\p{…}和\P{…}的支持... 369 Unicode行终结符... 370 使用java.util.regex. 371 The Pattern.compile() Factory. 372 Pattern的matcher方法... 373 Matcher对象... 373 应用正则表达式... 375 查询匹配结果... 376 简单查找-替换... 378 高级查找-替换... 380 原地查找-替换... 382 Matcher的检索范围... 384 方法链... 389 构建扫描程序... 389 Matcher的其他方法... 392 Pattern的其他方法... 394 Pattern的split方法,单个参数... 395 Pattern的split方法,两个参数... 396 拓展示例... 397 为Image Tag添加宽度和高度属性... 397 对于每个Matcher,使用多个Pattern校验HTML. 399 解析CSV文档... 401 Java版本差异... 401 1.4.2和1.5.0之间的差异... 402 1.5.0和1.6之间的差异... 403 第9章:.NET. 405 .NET的正则流派... 406 对于流派的补充... 409 使用.NET正则表达式... 413 正则表达式快速入门... 413 包概览... 415 核心对象概览... 416 核心对象详解... 418 创建Regex对象... 419 使用Regex对象... 421 使用Match对象... 427 使用Group对象... 430 静态“便捷”函数... 431 正则表达式缓存... 432 支持函数... 432 .NET高级话题... 434 正则表达式装配件... 434 匹配嵌套结构... 436 Capture对象... 437 第10章:PHP.. 439 PHP的正则流派... 441 Preg函数接口... 443 “Pattern”参数... 444 Preg函数罗列... 449 “缺失”的preg函数... 471 对未知的Pattern参数进行语法检查... 474 对未知正则表达式进行语法检查... 475 递归的正则表达式... 475 匹配嵌套括号内的文本... 475 不能回溯到递归调用之内... 477 匹配一组嵌套的括号... 478 PHP效率... 478 模式修饰符S:“研究”. 478 扩展示例... 480 用PHP解析CSV.. 480 检查tagged data的嵌套正确性... 481 索引...... 485
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上飞扬

您的支持和认可是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值