正则表达式

越塔打哭你 · · 6724 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

匹配纯文本  

Ben

Hello, my name is Ben. Please visit my website at http://www.forta.com


. 匹配任意字符(默认模式不匹配\n,单行模式可以匹配\n)   

a.c 

abc acc a2c


.a.\.xls  

na1.xls  na2.xls

前面两个点任意字符 ,最后一个转义点,  . 和 \ 等都叫做元字符(metacharacter),表示这个字符有特殊含义,而不是字符本身的含义,如果我们要匹配元字符的话,我们需要对元字符进行转义


 []   字符集,对应位置可以是字符集中的任意字符,字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c] ,第一个字符如果是^则表示取反,如[^abc];

所有特殊字符在字符集中都失去原有的特殊含义。其中 - ] ^特殊,如果要使用 - 或 ] 或 ^ 可以在前面加上反斜杠转义。-放在最前,或者最后,]放在第一个字符,^不在第一个字符,都会失去原有意义 


n\*123[*][1-9]

通过\转义或者字符集[]  元字符*失去原有意义 


[nsl]a.\.xls       

[nsl]表示n或者s或者l


[nsl]a[0123456789]\.xls    

0到9任意一个


[nsl]a[0-9a-f]\.xls        

字符区间0到9或者a到f 


[ns]a[^0-9]\.xls         

 取非 不能是0-9


 \d  

数字0-9


\D    等于   [^\d] 

非数字 


\w [A-Za-z0-9_] 

 单词字符


\W  等于 [^\w] 

 非单词字符


\s 

空白字符[<空格>\t\r\n\f\v] 


\S 等于 [^\s] 

 非空白字符


 匹配前一个字符0或无限次


+

 匹配前一个字符1次或无限次


 匹配前一个字符0次或1次


{m} 

 匹配前一个字符m次


{m,n} 

 匹配前一个字符m至n次


{n, }

至少匹配n次的写法为 


{0 , m}

至多匹配m次的写法为


+ 等价 {1, }

* 等价 {0, }

? 等价 {0 , 1}



 *   +   ?   {n, }   {m,n}

贪婪型元字符,尽可能长的去匹配 


 *?   +?    ??  {n, }?  {m,n}?

懒惰型元字符,尽可能短的去匹配


\b 

是一个位置匹配符,它用来匹配一个单词的边界位置


字符在这里用来匹配一个字符串开头位置的   


$  

字符用来匹配一个字符串的结束位置的


()

用() 括起来的叫做一个子表达式,括号里的内容被认为是一个整体,紧跟括号的数量限定符会作用于这个整体,通常在编程语言中利用子表达式语法捕获内容之后,被捕获内的内容会被存入一个数组,我们都是通过下标(即0, 1, 2, 3 ...)来访问这些内容的。(?s:re) 这个语法会把re指定为单行模式(即,在re中 . 可以匹配 \n 的), 同时不会对re匹配的内容进行捕获,如果我们需要捕获re中的内容的话,要在re的两端加上(), 即使用如下表达式 (?s:(re))


golang 使用正则表达式样例:



- 正则表达式在线测试 http://tool.chinaz.com/regex/

- 原始官方版本:https://code.google.com/p/re2/wiki/Syntax

- 国内好心人版本:http://www.sun190.com/2015/01/re2-%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:越塔打哭你

查看原文:正则表达式

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6724 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传