正则表达式教程---通过示例快速备忘单

转到Jonny Fox的个人资料 Jonny Fox封锁UnblockFollow 2017年6月22日

UPDATE! 查看我的新REGEX COOKBOOK,了解最常用(和最想要的)正则表达式🎉

正则表达式(regex或regexp)通过搜索特定搜索模式的一个或多个匹配(即ASCII或unicode字符的特定序列) 从任何文本提取信息 非常有用。

应用领域从验证到解析/替换字符串,将数据转换为其他格式和网页抓取。

最有趣的特性之一是,一旦你学会了语法,你几乎可以在(几乎)所有编程语言中使用这个工具(JavaScript,Java,VB,C#,C / C ++,Python,Perl,Ruby) ,Delphi,R,Tcl等等,对引擎支持的最高级功能和语法版本的支持有一点区别)。

让我们从一些例子和解释开始。

基本主题

锚点--- ^和$

 `\^The matches any string that starts with The->[**Try it!**](https://regex101.com/r/cO8lqs/2)` 
 `end$matches a string that ends with end` 
 `\^The end$ exact string match (starts and ends with The end)` 
 `roarmatches any string that has the text roar in it` 

量词--- * +?和{}

 `abc\* matches a string that has ab followed by zero or more c->[**Try it!**](https://regex101.com/r/cO8lqs/1)` 
 `abc+ matches a string that has ab followed by one or more c` 
 `abc? matches a string that has ab followed by zero or one c` 
 `abc{2} matches a string that has ab followed by 2 c` 
 `abc{2,} matches a string that has ab followed by 2 or more c` 
 `abc{2,5} matches a string that has ab followed by 2 up to 5 c` 
 `a(bc)\*matches a string that has a followed by zero or more copies of the sequence bc` 
 `a(bc){2,5}matches a string that hasa followed by 2 up to 5 copies of the sequence bc` 

OR运算符--- |要么 []

 `a(b\|c) matches a string that has a followed by b or c -\>[**Try it!**](https://regex101.com/r/cO8lqs/3)` 
 `a\[bc\] same as previous` 

字符类--- \ d \ w \ s和。

 `\\d matches a single character that is a digit->[**Try it!**](https://regex101.com/r/cO8lqs/4)` 
 `\\w matches a word character (alphanumeric character plus underscore) -> [**Try it!**](https://regex101.com/r/cO8lqs/4)` 
 `\\s matches a whitespace character (includes tabs and line breaks)` 
 `.matches any character->[**Try it!**](https://regex101.com/r/cO8lqs/5)` 

使用.操作员仔细,因为经常上课或否定的字符类(我们将在下面介绍)更快更精确。

\d\w\s也分别用\D\W\S表示它们的否定。

例如, \D将执行与\d获得的相反的匹配。

 `\\D matches a single non-digit character->[**Try it!**](https://regex101.com/r/cO8lqs/6)` 

为了按字面意思理解,你必须使用反斜杠\来转义字符^.[$()|*+?{\ ,因为它们具有特殊含义。

 `\\$\\dmatches a string that has a $ before one digit->[**Try it!**](https://regex101.com/r/cO8lqs/9)` 

请注意,您还可以匹配 不可打印的字符, 如tabs \t ,new-lines \n ,回车符\r

我们正在学习如何构建一个正则表达式但忘记了一个基本概念: 标志

正则表达式通常在此形式 / abc /中 ,其中搜索模式由两个斜杠字符/分隔。最后,我们可以指定一个带有这些值的标志(我们也可以将它们相互组合):

  • g (全局)在第一次匹配后不返回,从上一次匹配结束时重新开始后续搜索
  • m (多行)启用时^$将匹配行的开头和结尾,而不是整个字符串
  • i (不敏感)使整个表达式不区分大小写(例如 / aBc / i 将匹配 AbC

查看英文原文

查看更多文章

公众号:银河系1号

联系邮箱:public@space-explore.com

(未经同意,请勿转载)