正则表达式的基础用法
2017-09-22
在php中会经常使用到正则,经常会因为正则的反斜杠整懵逼。前一段时间,正好项目中用到正则,虽然研究的不深,但日常简单的正则表达式也足够用了。就拿工作中一个案例来讲吧。需要匹配两个#之间的内容。不同的工程师有不同的写法。
第一种写法
/#(.*?)#/如上,中间匹配的内容,就是你想要的匹配的内容,.*? 表示任意字符,括号在正则中表示匹配其中的原子整体为一个原子。/表示php的界定符,不同的语言和解释器,那个界定符会有所区别。php中的界定符有三种{} ## // 一般用// ,因为大括号有时作为运算符,容易混淆
第二种写法
/#([\s\S]*?)#/如上,\s是空白字符,\S是非空白字符,*?出现任意次。
第三种写法
/#([^#]+)#/如上,^这种符号如果在中括号里面,表示匹配除了方括号以外的字符,+表示匹配至少一次,也就是匹配1次到无穷大次,*表示匹配任意次,也就是从0次到无穷大次,?表示匹配0次或1次,[]中括号表示匹配方括号的任意字符。
以上三种方法,都可以匹配两个#号之间的字符。但是需求方要求,匹配的字符不能包括空值,并且中间字符不能#号。现在可以把以上正则,做一下处理,如下:
'/#((?!\s*#)[^#]+)#/si'
?!\s 除了空格,[^#]除了#号,组成的正则匹配,s和i都是修正模式,i忽略英文大小写,s匹配换行符的所有字符。
先简单的介绍这么多,前段时间分享的ppt链接附上,期待大家一同进步。https://www.yezismile.com/index/reg/#1