关于正则表达式

正则表达式30分钟入门教程
正则表达式的简单应用


如何匹配{abc:(a*c)=》c }?


WHAT

Regular Expression,是用来查找特定字符串的规则的表达式。(这个表达式描述的是这个查找规则)

WHY

与通配符相比,能灵活准确地查找出特定的字符串。

HOW

"我要找一个 这样并这样 的东西,吧啦吧啦..."

从三个方面描述匹配规则(这样并这样):

  • 位置
  • 字符
  • 数量

如何描述

原图

“在什么位置查找多少数量的什么字符。”
使用正则表达式的语法来表达如是的语句,成矣。

1.正则表达式基本语法

位置

代码/语法 说明
\b word start or end
^ string start
$ string end

零宽断言:

零宽度正预测 零宽度负回顾
先行断言 (?=exp)someword (?!=exp)someword
(?=exp)someword:查找exp,且后面是someword (?!=exp)someword:查找exp,且后面是someword
后发断言 (?<=exp)someword (?!<=exp)someword
(?<=exp)someword:查找exp,且前面是someword (?!<=exp)someword:查找exp,且前面是someword

怎么理解(?<=\s)\d+(?=\s)最后的(?=\s)?

字符

代码/语法 说明
. any character
\w word num underline
\s blank
\d num
[] collection

注意:大写字母与此相反,如\D表示不是数字。

数量

代码/语法 说明
* 0 or more
+ 1 or more
? 0 or at most 1
{n} n
{n,m} between n and m include
{n,} n or more

其他

mate character元字符

元字符代表一类:\d=[0-9];非元字符代表本身:()=>()。

分支条件 |

分组节()

(){1,3}:()里的部分重复1或3次。

向后引用

使用()可以指定一个子表达式,按从左至右的顺序会自动编号,0号是整个Sting。

  • 组号分配过程。
  • ?这里的分组是否与JavaScript中的match方法有联系

我们已经讨论了前两种语法。第三个(?:exp)不会改变正则表达式的处理方式,只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面,也不会拥有组号。“我为什么会想要这样做?”——好问题,你觉得为什么呢?

误:两个文本的替换可以匹配具体的内容FP_&1_&2 ,其中&1和&2即可指定具体的替换位置

反义

大写和^。

贪婪与懒惰

尽可能匹配最长的String与竟可能匹配少String:
?的使用法。

在大量使用嵌套的字符中需要思量。(常见的便是HTML文件中的<>嵌套,常用的规则利用)

(?<=<(\w)>).*(?=<\/\1)

转义

反斜杠\就是转义

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容