Regular Expression

1 备忘单

Pasted image 20240321113751.png

Pasted image 20240321114338.png|275

2 语法解释

1.普通字符:

  1. 元字符:

    • 正则表达式中的一些字符具有特殊的含义,被称为元字符。常见的元字符包括:. ^ $ * + ? \ | ( ) [ ] { }
    • . 表示匹配任意字符,^ 表示匹配字符串的开头,$ 表示匹配字符串的结尾。
  2. 字符类:

    • 使用字符类可以匹配某一类字符。字符类使用方括号 [] 表示。
    • 例如,[aeiou] 表示匹配任何一个元音字母。
  3. 范围:

    • 在字符类中可以使用连字符 - 表示字符的范围。
    • 例如,[a-z] 表示匹配任何小写字母。
  4. 反义:

    • 使用 ^ 在字符类内表示反义。例如,[^0-9] 表示匹配任何非数字字符。
  5. 重复:

    • 使用 * 表示匹配零个或多个前面的字符。例如,ab* 匹配 "a", "ab", "abb", "abbb", 等。
    • 使用 + 表示匹配一个或多个前面的字符。
    • 使用 ? 表示匹配零个或一个前面的字符。
  6. 分组:

    • 使用圆括号 () 可以将多个字符组合成一个子表达式。这允许在匹配时提取子表达式的内容。
  7. 转义:

    • 使用反斜杠 \ 可以转义元字符,使其失去特殊含义。例如,\. 匹配实际的点字符。
  8. 锚点:

    • ^$ 分别用于匹配字符串的开头和结尾,而不是匹配字符串中的任意位置。

2.1 实战经验

Date: 4 Aug 3PM
正向先行断言:(?=) \d+(?=PM) 只匹配后面带有 :(?!)\d+(?!PM) 的数字

Product Code: 1064 Price: 5:(?<=)(?<=$)\d+ 的数字
负向后行断言: (?<!) (?<!$)\d+ 只匹配前面不带有 $ 的数字

正则表达式默认是贪婪的
Pasted image 20240121132638.png

2.2 资源

Regex 101 - ZH-CN
i Hate Regex - The Regex Cheat Sheet 常用表达式