正则表达式随笔

每次都是想到需要正则的时候就百度下就好了,每次都这样,没有系统的归纳,一看就是好久,于是今天打算随便整理整理。
正则是干嘛的,基本上不用多说了,校验格式的。
1、 / 是定界符,一般起和终止都是/ 
2、+ 规定是它前面的字符必须连续存在一次或多次:[1,~]
3、* [0,~]
4、? [0,1]
其他的有
\s :用来匹配空格和换行符还有tab键
\S :用来匹配除了空格之外的所有字符
\d :0-9的数字
\D  [^0-9]表示非字符字符
\w 匹配字母下划线数字
\W 匹配非字符下划线数字
.   点匹配除了回车和换行以外的所有字符,可以说很强大的

总结:小写和大小的是相反的。正则表达式可以:/内容/ 也可以^内容$

2、还有不少
1、[a-z] 表示和a-z内的任何一个小写字母匹配
2、[a|z]
^ 开始

  () 域段
  [] 包含,默认是一个字符长度
  [^] 不包含,默认是一个字符长度
  {n,m} 匹配长度
  . 任何单个字符(. 字符点)
  | 或
  \ 转义
  $ 结尾
  [A-Z] 26个大写字母
  [a-z] 26个小写字母
  [0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
  , 分割

以上就是些概念了,主要说说惰性匹配和贪婪匹配

<?php

$str = 'abcdefght43534a534t';

$preg = '/a.*?t/';

$preg1 = '/a.*t/';


$result = preg_match_all($preg,$str,$match);
$result1 = preg_match_all($preg1,$str,$match1);
var_dump($match);
var_dump($match1);
.*?    是惰性匹配,匹配到满足条件的abcdefght就停止了此次匹配,不会干扰后面的继续匹配
所以第一个输出结果是
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(9) "abcdefght"
    [1]=>
    string(5) "a534t"
  }
}

.* 是贪婪匹配,他会尽可能多的占用字符串,所以结果是

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(19) "abcdefght43534a534t"
  }
}

4、非获取匹配
(?:pattern)
非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern)
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。

5、在匹配结束以后会带参数如:gimsex,各自的含义是:
1、/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
2、/i 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同
3、/m 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号
4、/s 与/m相对,单行模式匹配。
5、/e 可执行模式,此为PHP专有参数,例如preg_replace函数。
6、/x 忽略空白模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值