笔记:正则表达式

来源:互联网 发布:深圳海关 知乎 编辑:程序博客网 时间:2024/06/07 05:48

一个正则表达式需要4部分组成

.定界符多种都可以, 常用为 //

.原子最小的一个匹配单位(放在定界符中),在一个正则表达式中,至少要有一个原子

.元字符:元字符不能单独使用,修饰原子,是用来扩展原子功能的和限定功能(写在定界符号中)

.模式修正符:修正, 对模式(正则)修正, (写在定界符号外面,写在右边)

 

<?php

 

$str="aaaaaaaaaa3aaaaaa5aaaaaaa77777aaaa9aaa0aa<br>";

$reg="/\d/";

echo$str."<br>";

echopreg_replace($reg,"#",$str)."<br>";

print_r(preg_split($reg,$str));

echo"<br>";

if(preg_match_all($reg,$str,$arr)){

echo"正则表达式<b>{$reg}</b>和字符串<b>{$str}</b>匹配成功";

print_r($arr);

}else{

echo"没有匹配上<br>";

}

?>

 

 

原子:

1.打印字符(a-z A-Z 0-9 !@#$%^&*)和非打印字符

 

\转义字符

 

:可以将有意义的字符转成没有意义的原子字符 (将有意义变成原子)

:可以将没有意义的字符转成有意义的原子

: a-z A-Z 0-9 _所有没有意义的字符, 加上转义也没有意义的, \@都是可加可不加的

 

  1. 所有的数字,所有的字,所有的空白,所有的字母,所有特殊符号

 

/d 代表任意一个数字  [0-9]

 

/D 代表任意一个非数字  [^0-9]

 

/w 代表任意一个字 a-z A-Z 0-9 _  [a-zA-Z0-9_]

 

/W 代表任意一个非字 除了 a-z A-Z 0-9 _之外的所有字符  [^a-zA-Z0-9_]

 

/s 代表空白  [\t\n\f\v\r]

 

/S 代表非空白  [^\t\n\f\v\r]

 

  1. 自定义原子表
    1. [13579]
    2. [^a-zA-Z] 所有的非字母
    • 从哪到哪区间范围

  ^ 除列表中的

 

  1. " . "能代表所有

 

 

原子是正则表达式的最基本的组成单元,而且在每个模式中最少要包含一个原子.原子是由所有那些未显示指定为元字符的打印和非打印字符组成,具体分为5

  1. 普通字符作为原子: a-z A-Z 0-9
  2. 一些特殊字符和转义后元字符作为原子:
  • 所有标点符号,但语句特殊意义的符号需要转义后才可作为原子, : \" \' \* \+ \? \.
  1. 一些非打印字符作为原子: : \f \n \r \t \v \cx
  2. 使用"通用字符类型"作为原子: \d \D \w \W \s \S.
  3. 自定义原子表([])作为原子:: '/[apj]sp/' '/[^apj]sp/'

 

 

元字符:

计算机生成了可选文字:一 或 \A $ 或 丷 匹 配 0 次 、 I 次 或 多 次 其 到 的 泉 子 匹 配 [ 次 或 多 次 其 前 的 原 子 匹 配 0 次 或 [ 次 其 前 的 原 子 匹 配 两 个 或 多 个 分 支 选 择 表 示 其 前 面 的 原 子 恰 好 出 现 n 次 表 示 其 前 面 的 原 子 出 现 不 小 于 n 次 表 示 其 前 面 的 原 子 至 少 出 现 n 次 , 最 多 出 现 。 次 匹 配 输 入 享 符 串 的 开 始 位 置 ( 或 在 多 行 模 式 下 行 的 开 头 , 即 紧 随 一 个 换 行 符 之 后 ) 匹 配 輸 入 符 串 的 结 束 位 置 ( 或 在 多 行 模 式 下 行 的 结 尾 , 即 紧 随 一 个 换 行 苻 之 前 ) 匹 配 单 词 的 边 界 匹 配 除 单 词 访 界 以 外 的 部 分 匹 配 其 整 体 为 一 个 原 子 , 即 模 式 单 元 。 可 以 理 为 由 多 个 单 个 原 子 组 成 的 大 原 子

 

不能在正则表达式中单独使用,用来修饰原子的.

 

" * "用来修饰其前面的原子可以出现01个或多个(任意次)

" + "用来修饰其前面的原子可以出现1次或多次,不能没有至少要出现一次

" ? "用来修饰其前面的原子可以出现0次或1

" {} " {m} m = 3用来修饰其前面的原子只能出现 m ,多一次和少一次都不可以

{n,m} {2,5}用来修饰其前面的原子出现个数在nm之间,包括nm

{n,} {2,}用来修饰其前面的原子可以出现至少2

{,m} {,5}不可以

 

" | " 的关系,表示它两边的原子,只要有一个出现就可以, 但是, |优先级是最低的.

 

" ^ "" \A " 表示必须以什么开始,这个必须写在正则表达式的前面

 

" $ "" \Z " 表示必须以什么结束,这个必须写在正则表达式的最后面

 

" \b "单词边界

" \B "不是单词边界

 

" () "第一个作用: 改变优先级别

第二个作用:  将小原子变成大原子

第三个作用:  子模式,整个表达式是一个大的模式, 小括号中是每个独立的子模式

第四个作用:  反向引用  在括号里加 ?: 不用子模式 : (?:)

0 0
原创粉丝点击