正则表达式基础

来源:互联网 发布:苹果手机无法更新淘宝 编辑:程序博客网 时间:2024/05/07 14:23
正则表达式就是描述字符串排列模式的一种自定义语法规则
最擅长的就是处理字符串
如果可以使用字符串处理函数完成的任务,就不要使用正则表达式处理
有一些复杂的操作,只能使用正则表达式完成
正则表达式在很多语言中都有应用
正则表达式也叫做一种模式表达式
 正则表达式就是通过构建具有特定规则的模式,与输入的字符信息比较,再进行分割匹配查找替换等工作
如果正则表达式不和函数一起使用,则表示为一个字符串
两个方面学习:
    @· 正则表达式的模式如何编写
   1 定界符     //正则表达式的开始和结束符号
    除了数字字母 反斜线\ 以外的字符都可以为定界符   
    一般使用正斜线为定界符
/原子和元字符/模式修正符号/
    2 原子    
    原子是正则表达式最基本的组成单位,而且必须至少包含一个原子
    只要一个正则表达式可以单独使用的字符,就是原子
包含所有打印(能在屏幕上显示的字符)和非打印字符
*.<>如果所有有意义的字符,想作为原子使用,统统使用\转义字符
转义字符可以将有意义的字符转成没意义的字符
也可以将没意义的字符转成有意义的字符
在正则表达式中个可以直接使用一些代表范围的原子::
\d 表示任意一个十进制的数字
\D表示任意一个除了十进制的数字之外的字符
\s匹配任意一个空字符
\S表示任意一个非空白
\w表示任意一个字 a-z A-Z 0-9 _
\W表示任意一个非字,除了\w表示以外的字符
自己定义一个原子表[],可以匹配方括号中的任何一个原子
eg:
    [a-z6-8]    
    [^a-z]表示取反,^ 必须在开头

    3元字符
    元字符是一种特殊的字符,是用来修饰原子用的,不可以单独使用
*   \*    *如果不见表示特殊意义,表示其前面的可以出现0次 1次或多次
+   \+  +表示其前面的原子可以出现1次或多次
?  表示其前面的原子可以出现0次或一次
.   默认情况下,表示除换行符外,任意一个字符
^  直接在一个正则表达式的第一个字符出现,必须以其后面的原子开头
$  必须要以前面的原子结束
{}用于自己定义前面原子出现的次数{m}m表示一个整数,表示前面的原子只能出现的次数
{m,n} m要小于n  ,表示前面的原子出现的次数m到n次
{m,}表示前面的原子必须出现次数大于m次,最多可以无限次
|   表示或  优先级别是最低的,最后考虑它的功能
() 重点:
1.作用:是作为大原子使用
2.改变优先级别
3.作为子模式使用
\b  表示一个边界
\B 表示一个非边界
#作为子模式使用,正则表达式不先对一个字符串匹配一次,全部匹配作为一个大模式,放到数组的第一个元素中
,每个()是一个子模式按顺序放到数组的其他元素中去
#可以取消子模式,就将()作为大原子或盖面优先级使用,在括号中最前面使用?:就可以取消这个()表示的子模式
反向引用,可以在模式中直接将子模式取出来,再作为正则表达式模式的一部分,如果是在
正则表达式像替换函数 preg_replace函数中,可以将子模式取出,在被替换的字符串中使用
/1 取第一个子模式
/2取第二个子模式
等等(注意是单引号还是双引号引起来的正则)
”\\1“  '\1'
优先级别
\优先级别最高
()【】第二
*+?第三
^$
|最低


   4 模式修正符号   i  u
    @·学习正则表达式的强大处理函数 
//在定界符之外协商修正符
就是几个字母
可以一次使用一个,也可以连续使用多个,每个符号都有一定的作用
是对整个正则表达式调优或者是对正则表达式功能的扩展
eg: /abc/  只能匹配小写的abc
 "/abc/i" 匹配的字母不区分大小写
i:在和模式匹配时不区分大小写
m:默认情况将字符串视为一行
s:如果没有使用这个模式修正符号时,元字符的“。”默认不能代表换行符,将字符串视为单行 
x:表示模式中的空白忽略不计
e:正则表达式必须使用preg_replace替换字符串的函数中时才可以使用。
A:必须以什么开头
Z:以什么结尾
U:正则表达式的特点就是比较“贪婪”,只要符合的东西全部都能匹配出来
解决贪婪模式的办法: 
    一种使用模式修正符U
    另一种是使用?完成

0 0
原创粉丝点击