go原生正则库支持的和不支持的
   
           时间:05-30
           作者:
          
        
        正则表达式是一种描述字符串集合的符号。当某个字符串位于正则表达式描述的集合中时,我们通常说该正则表达式 与 该字符串 匹配。
最简单的正则表达式是单个文字字符。除了
        最简单的正则表达式是单个文字字符。除了
正则表达式是一种描述字符串集合的符号。当某个字符串位于正则表达式描述的集合中时,我们通常说该正则表达式 与 该字符串 匹配。
最简单的正则表达式是单个文字字符。除了像 这样的元字符外 *+?()|,字符都匹配自身。要匹配元字符,请使用反斜杠将其转义: \+ 匹配文字加号字符。
两个正则表达式可以交替使用或连接起来形成一个新的正则表达式:如果e 1匹配 s 且e 2匹配 t,则e 1 |e 2匹配 s 或 t,且 e 1 e 2 匹配 st。
元字符 *、 +和 ? 是重复运算符: e 1* 匹配零个或多个(可能不同)字符串序列,每个字符串都与e 1匹配; e 1+ 匹配一个或多个; e 1? 匹配零个或一个。
运算符优先级从最弱到最强,首先是交替运算符,然后是连接运算符,最后是重复运算符。显式括号可用于强制不同的含义,就像在算术表达式中一样。一些示例: ab|cd 等同于 (ab)|(cd); ab* 等同于 a(b*)。
到目前为止描述的语法是大多数传统的 Unix egrep 正则表达式语法。这个子集足以描述所有正则语言:粗略地说,正则语言是一组字符串,只需使用固定数量的内存即可在文本中进行一次匹配。较新的正则表达式工具(尤其是 Perl 和复制它的工具)添加了许多新的运算符和转义序列,这使得正则表达式更简洁,有时更隐晦,但通常不会更强大。
本页列出了 RE2 接受的正则表达式语法。请注意,粗略地说,此语法是 PCRE 接受的语法的子集,并且有各种 注意事项。
它还列出了 PCRE、PERL 和 VIM 接受的一些语法。
 
	
		
	
		
 
	
		
	
		
 
	
		
 
	
		
	
		
	
		
 
	
		
	
		
	
		
	
		
 
	
		
 
	
		
 
	
		
	
		
	
		
 
	
		
	
		
	
		
	
		
	
		
	
		
	
		
	
		
 
	
		
	
		
	
		
	
		
内容转自 https://github.com/google/re2/wiki/Syntax
 
        
        
        
      最简单的正则表达式是单个文字字符。除了像 这样的元字符外 *+?()|,字符都匹配自身。要匹配元字符,请使用反斜杠将其转义: \+ 匹配文字加号字符。
两个正则表达式可以交替使用或连接起来形成一个新的正则表达式:如果e 1匹配 s 且e 2匹配 t,则e 1 |e 2匹配 s 或 t,且 e 1 e 2 匹配 st。
元字符 *、 +和 ? 是重复运算符: e 1* 匹配零个或多个(可能不同)字符串序列,每个字符串都与e 1匹配; e 1+ 匹配一个或多个; e 1? 匹配零个或一个。
运算符优先级从最弱到最强,首先是交替运算符,然后是连接运算符,最后是重复运算符。显式括号可用于强制不同的含义,就像在算术表达式中一样。一些示例: ab|cd 等同于 (ab)|(cd); ab* 等同于 a(b*)。
到目前为止描述的语法是大多数传统的 Unix egrep 正则表达式语法。这个子集足以描述所有正则语言:粗略地说,正则语言是一组字符串,只需使用固定数量的内存即可在文本中进行一次匹配。较新的正则表达式工具(尤其是 Perl 和复制它的工具)添加了许多新的运算符和转义序列,这使得正则表达式更简洁,有时更隐晦,但通常不会更强大。
本页列出了 RE2 接受的正则表达式语法。请注意,粗略地说,此语法是 PCRE 接受的语法的子集,并且有各种 注意事项。
它还列出了 PCRE、PERL 和 VIM 接受的一些语法。
| 单字符表达的种类 | 例子 | 
|---|---|
| 任何字符,可能包括换行符 (s=true) | . | 
| 字符类 | [xyz] | 
| 否定字符类 | [^xyz] | 
| Perl 字符类(链接) | \d | 
| 否定的 Perl 字符类 | \D | 
| ASCII 字符类(链接) | [[:alpha:]] | 
| 否定的 ASCII 字符类 | [[:^alpha:]] | 
| Unicode 字符类(单字母名称) | \pN | 
| Unicode 字符类 | \p{Greek} | 
| 否定的 Unicode 字符类(单字母名称) | \PN | 
| 否定的 Unicode 字符类 | \P{Greek} | 
| 复合材料 | |
|---|---|
| xy | x其次是y | 
| x|y | x或y(更喜欢x) | 
| 重复 | |
|---|---|
| x* | 零或更多 x,更喜欢更多 | 
| x+ | 一个或多个 x,优选更多 | 
| x? | 零个或一个 x,最好一个 | 
| x{n,m} | n或n+1 或 ... 或mx,更喜欢 | 
| x{n,} | n或更多x,更喜欢更多 | 
| x{n} | 确切地 nx | 
| x*? | 零个或更多 x,优先选择较少 | 
| x+? | 一个或多个 x,优选较少 | 
| x?? | 零或一 x,最好是零 | 
| x{n,m}? | n或n+1 或 ... 或mx,更喜欢更少 | 
| x{n,}? | n或更多x,更喜欢更少 | 
| x{n}? | 确切地 nx | 
| x{} | (≡ x*)(不支持)VIM | 
| x{-} | (≡ x*?)(不支持)VIM | 
| x{-n} | (≡ x{n}?)(不支持)VIM | 
| x= | (≡ x?)(不支持)VIM | 
实施限制:计数形式x{n,m}、x{n,}和x{n}拒绝形式创建的最小或最大重复次数超过 1000。无限次重复不受此限制。
| 所有格重复 | |
|---|---|
| x*+ | 零个或多个 x,所有格(不支持) | 
| x++ | 一个或多个 x,所有格(不支持) | 
| x?+ | 零个或一个 x,所有格(不支持) | 
| x{n,m}+ | n或 ... 或mx,所有格(不支持) | 
| x{n,}+ | n或更多x,所有格(不支持) | 
| x{n}+ | 完全 nx,所有格(不支持) | 
| 分组 | |
|---|---|
| (re) | 编号捕获组(子匹配) | 
| (?P<name>re) | 命名和编号捕获组(子匹配) | 
| (?<name>re) | 命名和编号捕获组(子匹配) | 
| (?'name're) | 命名和编号捕获组(子匹配)(不支持) | 
| (?:re) | 非捕获组 | 
| (?flags) | 在当前组内设置标志;非捕获 | 
| (?flags:re) | 在重新设置标志;非捕获 | 
| (?#text) | 评论(不支持) | 
| (?|x|y|z) | 分支编号重置(不支持) | 
| (?>re) | 所有格匹配 re(不支持) | 
| re@> | re(不支持) VIM 的所有格匹配 | 
| %(re) | 非捕获组(不支持) VIM | 
| 标志 | |
|---|---|
| i | 不区分大小写(默认为 false) | 
| m | 多行模式:除了开始/结束文本外, ^还匹配开始/结束行(默认为 false)$ | 
| s | 让 .匹配\n(默认 false) | 
| U | ungreedy:交换 x*和x*?、x+和x+?等的含义(默认 false) | 
标志语法是xyz(set) 或-xyz(clear) 或xy-z(set xy, clear z)。
| 空字符串 | |
|---|---|
| ^ | 位于文本或行的开头 ( m=true) | 
| $ | 位于文本末尾(如 \znot\Z)或行尾(m=true) | 
| \A | 在文本开头 | 
| \b | 在 ASCII 字边界( \w在一侧,并且\W,,\A或\z在另一侧) | 
| \B | 不在 ASCII 字边界 | 
| \g | 在搜索的子文本的开头(不支持) PCRE | 
| \G | 在最后一场比赛结束时(不支持)PERL | 
| \Z | 在文本末尾,或文本末尾换行符之前(不支持) | 
| \z | 在文本末尾 | 
| (?=re) | 文本匹配之前 re(不支持) | 
| (?!re) | 文本不匹配之前 re(不支持) | 
| (?<=re) | 文本匹配后 re(不支持) | 
| (?<!re) | 文本不匹配后 re(不支持) | 
| re& | 文本匹配之前 re(不支持)VIM | 
| re@= | 文本匹配之前 re(不支持)VIM | 
| re@! | 文本不匹配之前 re(不支持)VIM | 
| re@<= | 文本匹配后 re(不支持)VIM | 
| re@<! | 文本不匹配 re(不支持)VIM | 
| \zs | 设置匹配的开始 (= \K)(不支持)VIM | 
| \ze | 设置匹配结束(不支持) VIM | 
| \%^ | 文件开头(不支持) VIM | 
| \%$ | 文件结束(不支持) VIM | 
| \%V | 在屏幕上(不支持) VIM | 
| \%# | 光标位置(不支持) VIM | 
| \%'m | 标记 m位置(不支持) VIM | 
| \%23l | 在第 23 行(不支持)VIM | 
| \%23c | 在第 23 列(不支持) VIM | 
| \%23v | 在虚拟列 23(不支持)VIM | 
| 转义序列 | |
|---|---|
| \a | 钟 (≡ \007) | 
| \f | 换页符 (≡ \014) | 
| \t | 水平制表符 (≡ \011) | 
| \n | 换行符(≡ \012) | 
| \r | 回车符 (≡ \015) | 
| \v | 垂直制表符 (≡ \013) | 
| \* | 文字 *,表示任何标点符号* | 
| \123 | 八进制字符代码(最多三位数字) | 
| \x7F | 十六进制字符代码(正好两位数字) | 
| \x{10FFFF} | 十六进制字符代码 | 
| \C | 即使在 UTF-8 模式下也匹配单个字节 | 
| \Q...\E | 文字 ...,即使...有标点符号 | 
| \1 | 反向引用(不支持) | 
| \b | 退格键(不支持)(使用 \010) | 
| \cK | 控制字符 ^K(不支持)(使用 \001等) | 
| \e | 转义(不支持)(使用 \033) | 
| \g1 | 反向引用(不支持) | 
| \g{1} | 反向引用(不支持) | 
| \g{+1} | 反向引用(不支持) | 
| \g{-1} | 反向引用(不支持) | 
| \g{name} | 命名反向引用(不支持) | 
| \g<name> | 子程序调用(不支持) | 
| \g'name' | 子程序调用(不支持) | 
| \k<name> | 命名反向引用(不支持) | 
| \k'name' | 命名反向引用(不支持) | 
| \lX | 小写 X(不支持) | 
| \ux | 大写 x(不支持) | 
| \L...\E | 小写文本 ...(不支持) | 
| \K | 重置开始 $0(不支持) | 
| \N{name} | 命名的 Unicode 字符(不支持) | 
| \R | 换行(不支持) | 
| \U...\E | 大写文本 ...(不支持) | 
| \X | 扩展 Unicode 序列(不支持) | 
| \%d123 | 十进制字符 123(不支持)VIM | 
| \%xFF | 十六进制字符 FF(不支持)VIM | 
| \%o123 | 八进制字符 123(不支持)VIM | 
| \%u1234 | Unicode 字符 0x1234(不支持)VIM | 
| \%U12345678 | Unicode 字符 0x12345678(不支持)VIM | 
| 字符类元素 | |
|---|---|
| x | 单个字符 | 
| A-Z | 字符范围(含) | 
| \d | Perl 字符类 | 
| [:foo:] | ASCII 字符类 foo | 
| \p{Foo} | Unicode 字符类 Foo | 
| \pF | Unicode 字符类 F(单字母名称) | 
| 命名字符类作为字符类元素 | |
|---|---|
| [\d] | 数字 (≡ \d) | 
| [^\d] | 非数字 (≡ \D) | 
| [\D] | 非数字 (≡ \D) | 
| [^\D] | 非非数字 (≡ \d) | 
| [[:name:]] | 在字符类中命名 ASCII 类 (≡ [:name:]) | 
| [^[:name:]] | 否定字符类内的命名 ASCII 类 (≡ [:^name:]) | 
| [\p{Name}] | 字符类内的命名 Unicode 属性 (≡ \p{Name}) | 
| [^\p{Name}] | 否定字符类中的命名 Unicode 属性 (≡ \P{Name}) | 
| Perl 字符类(全部仅 ASCII) | |
|---|---|
| \d | 数字 (≡ [0-9]) | 
| \D | 非数字 (≡ [^0-9]) | 
| \s | 空格(≡ [\t\n\f\r ]) | 
| \S | 非空格 (≡ [^\t\n\f\r ]) | 
| \w | 单词字符 (≡ [0-9A-Za-z_]) | 
| \W | 非单词字符 (≡ [^0-9A-Za-z_]) | 
| \h | 水平空间(不支持) | 
| \H | 非水平空间(不支持) | 
| \v | 垂直空间(不支持) | 
| \V | 非垂直空间(不支持) | 
| ASCII 字符类 | |
|---|---|
| [[:alnum:]] | 字母数字 (≡ [0-9A-Za-z]) | 
| [[:alpha:]] | 字母 (≡ [A-Za-z]) | 
| [[:ascii:]] | ASCII(≡ [\x00-\x7F]) | 
| [[:blank:]] | 空白 (≡ [\t ]) | 
| [[:cntrl:]] | 控制 (≡ [\x00-\x1F\x7F]) | 
| [[:digit:]] | 数字 (≡ [0-9]) | 
| [[:graph:]] | 图形 (≡ [!-~]≡[A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) | 
| [[:lower:]] | 小写 (≡ [a-z]) | 
| [[:print:]] | 可打印 (≡ [ -~]≡[ [:graph:]]) | 
| [[:punct:]] | 标点符号 (≡ [!-/:-@[-`{-~]) | 
| [[:space:]] | 空格(≡ [\t\n\v\f\r ]) | 
| [[:upper:]] | 大写(≡ [A-Z]) | 
| [[:word:]] | 单词字符 (≡ [0-9A-Za-z_]) | 
| [[:xdigit:]] | 十六进制数字 (≡ [0-9A-Fa-f]) | 
| Unicode 字符类名称--一般类别 | |
|---|---|
| C | 其他 | 
| Cc | 控制 | 
| Cf | 格式 | 
| Cn | 未分配的代码点(不支持) | 
| Co | 私人使用 | 
| Cs | 代孕 | 
| L | 信 | 
| LC | 大小写字母(不支持) | 
| L& | 大小写字母(不支持) | 
| Ll | 小写字母 | 
| Lm | 修饰字母 | 
| Lo | 其他信件 | 
| Lt | 标题字母 | 
| Lu | 大写字母 | 
| M | 标记 | 
| Mc | 间隔标记 | 
| Me | 封闭标记 | 
| Mn | 非间距标记 | 
| N | 数字 | 
| Nd | 十进制数 | 
| Nl | 字母编号 | 
| No | 其他号码 | 
| P | 标点 | 
| Pc | 连接标点 | 
| Pd | 破折号标点 | 
| Pe | 紧密标点 | 
| Pf | 最后的标点 | 
| Pi | 首标点 | 
| Po | 其他标点符号 | 
| Ps | 开放标点符号 | 
| S | 象征 | 
| Sc | 货币符号 | 
| Sk | 修饰符号 | 
| Sm | 数学符号 | 
| So | 其他符号 | 
| Z | 分隔器 | 
| Zl | 行分隔符 | 
| Zp | 段落分隔符 | 
| Zs | 空格分隔符 | 
| Unicode 字符类名称--脚本 | 
|---|
| Adlam | 
| Ahom | 
| Anatolian_Hieroglyphs | 
| Arabic | 
| Armenian | 
| Avestan | 
| Balinese | 
| Bamum | 
| Bassa_Vah | 
| Batak | 
| Bengali | 
| Bhaiksuki | 
| Bopomofo | 
| Brahmi | 
| Braille | 
| Buginese | 
| Buhid | 
| Canadian_Aboriginal | 
| Carian | 
| Caucasian_Albanian | 
| Chakma | 
| Cham | 
| Cherokee | 
| Chorasmian | 
| Common | 
| Coptic | 
| Cuneiform | 
| Cypriot | 
| Cypro_Minoan | 
| Cyrillic | 
| Deseret | 
| Devanagari | 
| Dives_Akuru | 
| Dogra | 
| Duployan | 
| Egyptian_Hieroglyphs | 
| Elbasan | 
| Elymaic | 
| Ethiopic | 
| Georgian | 
| Glagolitic | 
| Gothic | 
| Grantha | 
| Greek | 
| Gujarati | 
| Gunjala_Gondi | 
| Gurmukhi | 
| Han | 
| Hangul | 
| Hanifi_Rohingya | 
| Hanunoo | 
| Hatran | 
| Hebrew | 
| Hiragana | 
| Imperial_Aramaic | 
| Inherited | 
| Inscriptional_Pahlavi | 
| Inscriptional_Parthian | 
| Javanese | 
| Kaithi | 
| Kannada | 
| Katakana | 
| Kawi | 
| Kayah_Li | 
| Kharoshthi | 
| Khitan_Small_Script | 
| Khmer | 
| Khojki | 
| Khudawadi | 
| Lao | 
| Latin | 
| Lepcha | 
| Limbu | 
| Linear_A | 
| Linear_B | 
| Lisu | 
| Lycian | 
| Lydian | 
| Mahajani | 
| Makasar | 
| Malayalam | 
| Mandaic | 
| Manichaean | 
| Marchen | 
| Masaram_Gondi | 
| Medefaidrin | 
| Meetei_Mayek | 
| Mende_Kikakui | 
| Meroitic_Cursive | 
| Meroitic_Hieroglyphs | 
| Miao | 
| Modi | 
| Mongolian | 
| Mro | 
| Multani | 
| Myanmar | 
| Nabataean | 
| Nag_Mundari | 
| Nandinagari | 
| New_Tai_Lue | 
| Newa | 
| Nko | 
| Nushu | 
| Nyiakeng_Puachue_Hmong | 
| Ogham | 
| Ol_Chiki | 
| Old_Hungarian | 
| Old_Italic | 
| Old_North_Arabian | 
| Old_Permic | 
| Old_Persian | 
| Old_Sogdian | 
| Old_South_Arabian | 
| Old_Turkic | 
| Old_Uyghur | 
| Oriya | 
| Osage | 
| Osmanya | 
| Pahawh_Hmong | 
| Palmyrene | 
| Pau_Cin_Hau | 
| Phags_Pa | 
| Phoenician | 
| Psalter_Pahlavi | 
| Rejang | 
| Runic | 
| Samaritan | 
| Saurashtra | 
| Sharada | 
| Shavian | 
| Siddham | 
| SignWriting | 
| Sinhala | 
| Sogdian | 
| Sora_Sompeng | 
| Soyombo | 
| Sundanese | 
| Syloti_Nagri | 
| Syriac | 
| Tagalog | 
| Tagbanwa | 
| Tai_Le | 
| Tai_Tham | 
| Tai_Viet | 
| Takri | 
| Tamil | 
| Tangsa | 
| Tangut | 
| Telugu | 
| Thaana | 
| Thai | 
| Tibetan | 
| Tifinagh | 
| Tirhuta | 
| Toto | 
| Ugaritic | 
| Vai | 
| Vithkuqi | 
| Wancho | 
| Warang_Citi | 
| Yezidi | 
| Yi | 
| Zanabazar_Square | 
| Vim 字符类 | |
|---|---|
| \i | 标识符字符(不支持)VIM | 
| \I | \i除了数字(不支持) VIM | 
| \k | 关键字字符(不支持) VIM | 
| \K | \k除了数字(不支持) VIM | 
| \f | 文件名字符(不支持)VIM | 
| \F | \f除了数字(不支持) VIM | 
| \p | 可打印字符(不支持) VIM | 
| \P | \p除了数字(不支持) VIM | 
| \s | 空格字符 (≡ [ \t])(不支持)VIM | 
| \S | 非空白字符 (≡ [^ \t])(不支持)VIM | 
| \d | 数字 (≡ [0-9]) VIM | 
| \D | 不是 \dVIM | 
| \x | 十六进制数字 (≡ [0-9A-Fa-f])(不支持)VIM | 
| \X | 不 \x支持(不支持)VIM | 
| \o | 八进制数字 (≡ [0-7])(不支持)VIM | 
| \O | 不 \o支持(不支持)VIM | 
| \w | 单词字符 VIM | 
| \W | 不是 \wVIM | 
| \h | 字头字符(不支持) VIM | 
| \H | 不 \h支持(不支持)VIM | 
| \a | 字母(不支持) VIM | 
| \A | 不 \a支持(不支持)VIM | 
| \l | 小写(不支持) VIM | 
| \L | 非小写(不支持) VIM | 
| \u | 大写(不支持) VIM | 
| \U | 非大写(不支持) VIM | 
| \_x | \x加上换行符,适用于任何x(不支持)VIM | 
| \c | 忽略大小写(不支持)VIM | 
| \C | 匹配大小写(不支持) VIM | 
| \m | magic(不支持)VIM | 
| \M | nomagic(不支持)VIM | 
| \v | verymagic(不支持)VIM | 
| \V | verynomagic(不支持)VIM | 
| \Z | 忽略 Unicode 组合字符的差异(不支持)VIM | 
| 魔法 | |
|---|---|
| (?{code}) | 任意 Perl 代码(不支持)PERL | 
| (??{code}) | 推迟任意 Perl 代码(不支持)PERL | 
| (?n) | 对正则表达式捕获组的递归调用 n(不支持) | 
| (?+n) | 对相关组的递归调用 +n(不支持) | 
| (?-n) | 对相关组的递归调用 -n(不支持) | 
| (?C) | PCRE 调用(不支持)PCRE | 
| (?R) | 递归调用整个正则表达式 (≡ (?0))(不支持) | 
| (?&name) | 对命名组的递归调用(不支持) | 
| (?P=name) | 命名反向引用(不支持) | 
| (?P>name) | 对命名组的递归调用(不支持) | 
| (?(cond)true|false) | 条件分支(不支持) | 
| (?(cond)true) | 条件分支(不支持) | 
| (*ACCEPT) | 使正则表达式更像 Prolog(不支持) | 
| (*COMMIT) | (不支持) | 
| (*F) | (不支持) | 
| (*FAIL) | (不支持) | 
| (*MARK) | (不支持) | 
| (*PRUNE) | (不支持) | 
| (*SKIP) | (不支持) | 
| (*THEN) | (不支持) | 
| (*ANY) | 设置换行约定(不支持) | 
| (*ANYCRLF) | (不支持) | 
| (*CR) | (不支持) | 
| (*CRLF) | (不支持) | 
| (*LF) | (不支持) | 
| (*BSR_ANYCRLF) | 设置 \R 约定(不支持) PCRE | 
| (*BSR_UNICODE) | (不支持)PCRE | 
内容转自 https://github.com/google/re2/wiki/Syntax
 
      