正则表达式

正则表达式(Regular Expression,简称为RegExp或Regex)是一种用于描述字符串匹配规则的表达式。在正则表达式中,一些字符具有特殊的含义,它们用于指定匹配的模式。

以下是一些基本的正则表达式语法:

  1. 普通字符:

    • 普通字符(例如字母、数字、标点符号)在正则表达式中表示它们本身。
    abc123
  2. 元字符:

    • 元字符具有特殊的含义,例如 ^ 表示字符串的开始,$ 表示字符串的结束。
    ^abc$  // 匹配以 "abc" 开始且以 "abc" 结束的字符串
  3. 字符类:

    • 使用方括号 [] 表示字符类,匹配括号内的任意一个字符。
    [abc]  // 匹配 'a'、'b' 或 'c'
  4. 范围:

    • 使用连字符 - 表示范围。
    [a-z]  // 匹配任意小写字母
  5. 反义字符类:

    • 使用 ^ 在字符类内表示取反。
    [^0-9]  // 匹配任意非数字字符
  6. 点号:

    • 点号 . 匹配任意字符(除了换行符 \n)。
    a.b  // 匹配 "a"、任意字符、"b"
  7. 重复:

    • 使用 * 表示前面的字符可以重复零次或多次。
    • 使用 + 表示前面的字符可以重复一次或多次。
    • 使用 ? 表示前面的字符可以重复零次或一次。
    • 使用 {n} 表示前面的字符重复 n 次。
    • 使用 {n,} 表示前面的字符重复至少 n 次。
    • 使用 {n,m} 表示前面的字符重复 n 到 m 次。
    \d*   // 匹配任意数字零次或多次
    \d+   // 匹配任意数字一次或多次
    \d?   // 匹配任意数字零次或一次
    \d{3} // 匹配任意三个数字
    \d{2,5} // 匹配任意 2 到 5 个数字
  8. 分组:

    • 使用小括号 () 进行分组。
    (ab)+  // 匹配 "ab"、"abab"、"ababab" 等
  9. 字符转义:

    • 使用反斜杠 \ 转义元字符,使其成为普通字符。
    \.  // 匹配实际的点号字符

这只是正则表达式语法的入门,正则表达式有更多复杂和强大的功能。

正则表达式(RegExp)是一个强大的工具,具有丰富的高级语法和技巧,可以用于更复杂和灵活的匹配。以下是一些正则表达式的高级语法和技巧:

  1. 零宽断言:

    • 零宽断言用于在匹配位置的前面或后面添加条件。
    • (?=...):正向先行断言(正向肯定预查)。
    • (?!...):负向先行断言(正向否定预查)。
    • (?<=...):正向后行断言(反向肯定预查)。
    • (?<!...):负向后行断言(反向否定预查)。
    \b\w+(?=ing\b)  // 匹配以 "ing" 结尾的单词的前面部分
  2. 非捕获组:

    • 使用 (?:...) 表示非捕获组,不会捕获匹配的内容。
    (?:abc)+  // 匹配 "abc"、"abcabc" 等,但不会捕获每个 "abc"
  3. 嵌套引用:

    • 可以在正则表达式中嵌套引用之前的捕获组。
    (\w+)=(['"])((?:\\\2|.)*?)\2  // 匹配 key='value' 或 key="value",并捕获 key 和 value
  4. 逻辑或:

    • 使用 | 表示逻辑或,匹配多个选项中的一个。
    cat|dog  // 匹配 "cat" 或 "dog"
  5. 后向引用:

    • 使用 \1, \2, … 表示对前面捕获组的后向引用。
    (\w)\1  // 匹配重复的字符,如 "dd"、"11" 等
  6. 断言条件:

    • 使用 (?ifthen|else) 条件语法,根据条件匹配不同的模式。
    (?i)(?:(?<=Mr\. )|(?<=Mrs\. ))\w+  // 匹配 "Mr. Smith" 或 "Mrs. Johnson"
  7. 递归匹配:

    • 使用 (?R) 表示递归匹配。
    (\((?R)*\))  // 匹配括号内可能嵌套的内容,如 "(a(b)c)"
  8. 命名捕获组:

    • 使用 (?<name>...) 给捕获组命名。
    (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})  // 匹配日期,并捕获年、月、日
  9. Unicode 支持:

    • 使用 \p{L} 表示 Unicode 字母,\p{N} 表示 Unicode 数字等。
    \p{L}+  // 匹配任意 Unicode 字母
  10. 模式修饰符:

    • 使用模式修饰符改变匹配的行为。
    • i:不区分大小写。
    • s:使 . 匹配包括换行符在内的所有字符。
    • m:多行模式,使 ^$ 匹配每一行的开始和结束。
    /pattern/i

这只是正则表达式高级语法和技巧的一小部分。正则表达式是一个强大而复杂的主题,深入学习可能需要时间。在实际使用中,可以通过在线正则表达式测试工具来验证和调试正则表达式。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!