正则表达式google / re2

2020-12-02 0 2,818 百度已收录

正则表达式是描述字符串集的一种表示法。当特定字符串位于正则表达式描述的集合中时,我们通常会说正则表达式  字符串匹配

最简单的正则表达式是单个文字字符。除元字符(如)外 *+?()|,字符会相互匹配。要匹配元字符,请使用反斜杠将其转义: \+ 匹配文字加号。

两个正则表达式可以交替使用或连接起来以形成新的正则表达式:如果1匹配 s 并且2匹配 t,则|2匹配 s 或 t, 2 匹配 st

元字符 *, +和 ? 是重复运算符: 1* 匹配零个或多个(可能不同)字符串的序列,每个字符串都匹配1; 1+ 匹配一个或多个; 1? 匹配零或一。

从最弱绑定到最强绑定,运算符优先级是首先交替,然后是串联,最后是重复运算符。就像在算术表达式中一样,可以使用显式括号来强制使用不同的含义。一些例子: ab|cd 相当于 (ab)|(cd)ab* 等价于 a(b*)

到目前为止描述的语法是大多数传统的Unix egrep 正则表达式语法。该子集足以描述所有常规语言:宽松地说,常规语言是一组字符串,可以仅使用固定数量的内存就可以在一次遍历文本中进行匹配。较新的正则表达式工具(特别是Perl及其复制者)增加了许多新的运算符和转义序列,这使正则表达式更简洁,有时更神秘,但通常不更强大。

本页列出了RE2接受的正则表达式语法。

它还列出了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 xy(首选x
重复次数
x* 零或更多x,更喜欢
x+ 一个或多个x,更喜欢
x? 零或一x,喜欢一个
x{n,m} nn+1或…或m x,更喜欢
x{n,} n或更多x,更喜欢
x{n} 究竟 n x
x*? 零或更多x,更喜欢更少
x+? 一个或多个x,更喜欢较少
x?? 零或一x,更喜欢零
x{n,m}? nn+1或…或m x,更喜欢
x{n,}? n或更多x,偏爱更少
x{n}? 究竟 n x
x{} (≡ x*)(不支持)VIM
x{-} (≡ x*?)(不支持)VIM
x{-n} (≡ x{n}?)(不支持)VIM
x= (≡ x?)(不支持)VIM

实施限制:创建最小或最大重复次数超过1000的计数表格x{n,m}x{n,}x{n}拒绝表格。无限制的重复不受此限制。

所有格重复
x*+ 零个或多个x,所有格(不支持)
x++ 一个或多个x,所有格(不支持)
x?+ 零或一x,所有格(不支持)
x{n,m}+ n或…或m x,所有格(不支持)
x{n,}+ n或以上x,所有格(不支持)
x{n}+ 完全n x,所有格(不支持)
分组
(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(不支持)之后
\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:]] 字符类(≡ [:name:])中已命名的ASCII类
[^[:name:]] 否定字符类(≡ [:^name:])内的命名ASCII类
[\p{Name}] 字符类(≡ \p{Name})中已命名的Unicode属性
[^\p{Name}] 否定字符类(≡ \P{Name})中的已命名Unicode属性

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
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
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
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
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
Tangut
Telugu
Thaana
Thai
Tibetan
Tifinagh
Tirhuta
Ugaritic
Vai
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 魔术(不支持)VIM
\M nomagic(不支持)VIM
\v 非常神奇(不支持)VIM
\V VIM(不支持)VIM
\Z 忽略Unicode组合字符中的差异(不支持)VIM
魔法
(?{code}) 任意Perl代码(不支持)PERL
(??{code}) 推迟任意Perl代码(不支持)PERL
(?n) 对正则表达式捕获组的递归调用n(不支持)
(?+n) 对相关组的递归调用+n(不支持)
(?-n) 对相关组的递归调用-n(不支持)
(?C) 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
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

栗子博客 软件 正则表达式google / re2 https://www.lizi.tw/soft/18829.html

建筑工地上施工员,闲暇时弄个博客打发时间,

常见问题
  • 1、杰齐1.7仅适用于PHP5.2 2、需Zend支持 3、尽量使用宝塔面板 4、尽量使用Windows 系统,关关对Linux支持不太友好。
查看详情

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

正则表达式google / re2-海报

分享本文封面