Sheet 1
正则表达式
  Author：Clloz.com
  定位符
    ^
      匹配一行的开始(multiple模式下可以识别\n)
    $
      匹配字符串的末尾或字符串末尾的\n之前(multiple模式下可以识别\n)
    \A
      匹配字符串的开头(和^类似，但是不受multiple模式影响)
    \Z
      匹配字符串的结束(和$类似，但是不受multiple模式影响)
    \z
      匹配字符串的末尾
    \G
      匹配上次匹配成功的位置(初始位置默认是成功位置)
    \b
      匹配单词的开始或结束(该位置前后不全是/w)
    \B
      匹配不是单词的开始或结束
  分组构造
    (subexpression)
      捕获匹配的子表达式并将其分配到一个从 1 开始的序号中。
    (?<name>subexpression)
      将匹配的子表达式捕获到一个命名组中。
    (?<name1-name2>subexpression)
      定义平衡组定义。除.NET之外，大多数语言的正则引擎都不支持平衡组
    (?:subexpression)
      定义非捕获组
    (?imnsx-imnsx: subexpression )
      应用或禁用 子表达式中指定的选项。模式查看点击链接。
    (?=subexpression)
      零宽度正预测先行断言，向前断言，匹配位置。比如x(?=y)表示x被y紧随时匹配x
    (?!subexpression)
      零宽度负预测先行断言，向前否定断言，匹配位置。比如x(?!y)表示x没有被y紧随时匹配x
    (?<=subexpresssion)
      零宽度正回顾后发断言，向后断言，匹配位置。比如(?<=y)x表示x 跟随 y 的情况下匹配 x
    (?<!subexpression)
      零宽度负回顾后发断言，向后否定断言，匹配位置。比如(?<!y)x表示x不跟随y时匹配x
    (?>subexpression)
      原子组
    \number
      后向引用。 匹配编号子表达式的值。
    \k name
      命名后向引用。 匹配命名表达式的值。
    |
      匹配以竖线 (|) 字符分隔的任何一个元素。
    (?( expression ) yes | no )
      以expression为零宽断言，若匹配到expression则匹配yes表达式，否则匹配no表达式，类似三目运算符
    (?(name)yes|no)
      如果 name (已命名或已编号的捕获组）具有匹项，则匹配 yes；否则，匹配可的 no。
  字符转义和注释
    \a
      与报警 (bell) 符 \u0007 匹配。
    \b
      在字符类中，与退格键 \u0008 匹配。
    \t
      与制表符 \u0009 匹配。
    \r
      与回车符 \u000D 匹配。 （\r 与换行符 \n不是等效的。）
    \v
      与垂直制表符 \u000B 匹配。
    \f
      与换页符 \u000C 匹配。
    \n
      与换行符 \u000A 匹配。
    \e
      与转义符 \u001B 匹配。
    \
      转义非定义的字符
    (?#comment)
      内联注释。 该注释在第一个右括号处终止。
    #[至行尾]
      X 模式注释。 该注释以非转义的 # 开头，并继续到行的结尾。
    正则表达式模式imnsx
  替代
    $number
      替换按组 number匹配的子字符串。
    ${name}
      替换按命名组 name匹配的子字符串。
    $$
      替换字符"$"。
    $&
      替换整个匹配项的一个副本。
    $`
      替换匹配前的输入字符串的所有文本。
    $'
      替换匹配后的输入字符串的所有文本。
    $+
      替换最后捕获的组。
    $_
      替换整个输入字符串。
  Unicode
    \ nnn
      八进制ASCII(n为两位或者三位)
    \x nn
      十六进制扩展ASCII
    \u nnnn
      JS中为UTF16编码
    \u{hhhhh}
      JS中匹配Unicode码点
    \p{name}
      与 name指定的 Unicode 通用类别或命名块中的任何单个字符匹配。
    \P{name}
      与不在 name指定的 Unicode 通用类别或命名块中的任何单个字符匹配。
    \c X或\c x
      匹配 X 或 x指定的 ASCII 控制字符，其中 X 或 x 是控制字符的字母。
  数量词
    *
      匹配上一个元素零次或多次
    +
      匹配上一个元素一次或多次
    ?
      匹配上一个元素零次或一次
    {n}
      匹配上一个元素n次
    {n,}
      匹配上一个元素n次或更多次
    {n,m}
      匹配上一个元素n到m次
    *?
      匹配上一个元素零次或多次，但次数尽可能少。
    +?
      匹配上一个元素一次或多次，但次数尽可能多。
    ??
      匹配上一个元素零次或一次，但次数尽可能少。
    {n}?
      匹配前面的元素恰好 n 次。
    {n,}?
      匹配上一个元素至少 n 次，但次数尽可能少。
    {n,m}?
      匹配上一个元素的次数介于 n 和 m 之间，但次数尽可能少。
  字符类
    .
      匹配换行符以外的任意字符
    \w
      匹配字母、数字、下划线和汉字
    \W
      匹配任意非单词字符
    \s
      匹配任意空白符
    \S
      匹配任意非空白符
    \d
      匹配任意十进制数
    \D
      匹配非十进制数的任意字符
    [character-group]
      匹配 character_group中的任何单个字符。 区分大小写。
    [^character-group]
      与不在 character_group 中的任意单个字符匹配。区分大小写
    [first-last]
      字符范围：与从 first 到 last的范围中的任意单个字符匹配。
模式：^\d{3}
匹配："901-333-" 中的 "901"
模式：-\d{3}$
匹配："-901-333" 中的 "-333"
模式：\A\d{3}
匹配："901-333-" 中的 "901"
模式：-\d{3}\Z
匹配："-901-333" 中的 "-333"
模式：-\d{3}\z
匹配："-901-333" 中的 "-333"
模式：\G\(\d\)
匹配："(1)(3)(5)[7](9)" 中的 "(1)"、"(3)" 和 "(5)"
模式：\b\w+\s\w+\b
匹配："them theme them them" 中的 "them theme" 和 "them them"
模式：\Bend\w*\b
匹配："end sends endure lender" 中的 "ends" 和 "ender"
模式：(\w)\1
匹配："deep" 中的 "ee"
模式：(?<double>\w)\k<double>
匹配："deep" 中的 "ee"
模式：(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$
匹配："3+2^((1-3)*(3-1))" 中的 "((1-3)*(3-1))"
模式：Write(?:Line)?
匹配："Console.WriteLine()" 中的 "WriteLine"，"Console.Write(value)" 中的 "Write"
模式：A\d{2}(?i:\w+)\b
匹配："A12xl A12XL a12xl" 中的 "A12xl" 和 "A12XL"
模式：\w+(?=\.)
匹配："He is. The dog ran. The sun is out." 中的 "is"、"ran" 和 "out"
模式：\b(?!un)\w+\b
匹配："unsure sure unity used" 中的 "sure" 和 "used"
模式：(?<=19)\d{2}\b
匹配："1851 1999 1950 1905 2003" 中的 "99"、"50" 和 "05"
模式：(?<!19)\d{2}\b
匹配："1851 1999 1950 1905 2003" 中的 "51" 和 "03"
模式：[13579](?>A+B+)
匹配："1ABB 3ABBC 5AB 5AC" 中的 "1ABB"、"3ABB" 和 "5AB"
模式：(\w)\1
匹配："seek" 中的 "ee"
模式：(?<char>\w)\k<char>
匹配："seek" 中的 "ee"
模式：th(e|is|at)
匹配："this is the day." 中的 "the" 和 "this"
模式：(?(A)A\d{2}\b|\b\d{3}\b)
匹配："A10 C103 910" 中的 "A10" 和 "910"
模式：(?<quoted>")?(?(quoted).+?"|\S+\s)
匹配"Dogs.jpg \"Yiska playing.jpg\"" 中的 "Dogs.jpg " 和 "\"Yiska playing.jpg\""
模式：\a
匹配："Error!" + '\u0007' 中的 "\u0007"
模式：[\b]{3,}
匹配："\b\b\b\b" 中的 "\b\b\b\b"
模式：\d+[\+-x\*]\d+
匹配："(2+2) * 3*9" 中的 "2+2" 和 "3*9"
i：使用不区分大小写的匹配。
m：使用多行模式。 ^ 和 $ 匹配行的开头和结尾，但不匹配字符串的开头和结尾。
n：不捕获未命名的组。
s：使用单行模式。
x：忽略正则表达式模式中的非转义空白。
模式：\b(\w+)(\s)(\w+)\b
替换模式：$3$2$1
输入字符串："one two"
结果字符串："two one"
模式：\b(?<word1>\w+)(\s)(?<word2>\w+)\b
替换模式：${word2} ${word1}
输入字符串："one two"
结果字符串："two one
模式：\b(\d+)\s?USD
替换模式：$$$1
输入字符串："103 USD"
结果字符串："$103"
模式：\$?\d*\.?\d+
替换模式：**$&**
输入字符串："$1.30"
结果字符串："**$1.30**"
模式：B+
替换模式：$`
输入字符串："AABBCC"
结果字符串："AAAACC"
模式：B+
替换模式：$'
输入字符串："AABBCC"
结果字符串："AACCCC"
模式：B+(C+)
替换模式：$+
输入字符串："AABBCCDD"
结果字符串："AACCDD"
模式：B+
替换模式：$_
输入字符串："AABBCC"
结果字符串："AAAABBCCCC"
模式：\w\040\w
匹配："a bc d" 中的 "a b" 和 "c d"
模式：\w\x20\w
匹配："a bc d" 中的 "a b" 和 "c d"
模式：\w\u0020\w
匹配："a bc d" 中的 "a b" 和 "c d"
模式：\p{Lu}
匹配："City Lights" 中的 "C" 和 "L"
模式：\p{IsCyrillic}
匹配："ДЖem" 中的 "Д" 和 "Ж"
模式：\P{Lu}
匹配："City" 中的 "i"、"t" 和 "y"
模式：\P{IsCyrillic}
匹配："ДЖem" 中的 "e" 和 "m"
模式：\cC
匹配："\x0003" 中的 "\x0003" (Ctrl-C)
模式：\d*\.\d
匹配：".0", "19.9", "219.9"
模式："be+"
匹配："been" 中的 "bee"、"bent" 中的 "be"
模式："rai?n"
匹配："ran"，"rain"
模式：",\d{3}"
匹配："1,043.6" 中的 ",043"、"9,876,543,210" 中的 ",876"、",543" 和 ",210"
模式："\d{2,}"
匹配："166", "29", "1930"
模式："\d{3,5}"
匹配："193024" 中的 "19302"
模式：\d*?\.\d
匹配：".0", "19.9", "219.9"
模式："be+?"
匹配："been" 中的 "be"、"bent" 中的 "be"
模式："rai??n"
匹配："ran"，"rain"
模式：",\d{3}?"
匹配："1,043.6" 中的 ",043"、"9,876,543,210" 中的 ",876"、",543" 和 ",210"
模式："\d{2,}?"
匹配："166", "29", "1930"
模式："\d{3,5}?"
匹配："193024" 中的 "193" 和 "024"
模式：a.e
匹配："nave" 中的 "ave"，"water" 中的 "ate"
模式：\w
匹配："ID A1.3" 中的 "I"、"D"、"A"、"1" 和 "3"
模式：\W
匹配："ID A1.3" 中的 " " 和 "."
模式：\w\s
匹配："ID A1.3" 中的 "D "
模式：\s\S
匹配："int __ctr" 中的 " _"
模式：\d
匹配："4 = IV" 中的 "4"
模式：\D
匹配："4 = IV" 中的 " "、"="、" "、"I" 和 "V"
模式：[ae]
匹配："gray" 中的 "a"，"lane" 中的 "a" 和 "e"
模式：[^aei]
匹配："reign" 中的 "r"、"g" 和 "n"
模式：[A-Z]
匹配："AB123" 中的 "A" 和 "B"