php正则表达式简介
正则表达式简介
正则表达式Regular Expression,使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。代表性书籍《正则表达式之道》里面有详细论述,本书籍为个人查阅之用力求精简、明确、方便使用,只对必要概念做补充性说明。
界定符
正则表达式本身即是一个字符串,需要一组界定符区分出哪里是正则表达式的内容。//和##和{},都是界定符,在PHP语言中用//作为正则表达式的界定符。一般不建议用{}做界定符,因为{}本身也可以是正则表达式的元字符,容易混淆。
元字符
| 匹配两个或者多个分支选择
[] 匹配方括号中任意的原子
[^] 匹配方括号中原子之外的任意字符,相当于[]的非
. 匹配除换行符之外的任意一个字符
\d 匹配任意一个十进制的数字,即[0-9]
\D 匹配任意一个非十进制的数字,即[^0-9]
\s 匹配任意一个不可见原子(空白符),即[\f\n\r\t\v]
\S 匹配任意一个非不可见原子(空白符),即[^\f\n\t\v]
\w 匹配任意一个数字、字母或者下划线,即[0-9a-zA-Z_]
\W 匹配任意一个非数字、字母、或者下划线,即[^0-9a-zA-Z_]
量词(匹配次数)
{n} 前面原子恰好重复n次
{n,} 前面原子重复>=n次
{n,m} 前面原子重复大于等于n次,小于等于m次
*重复0次或者更多次
+重复1次或者更多次
?重复0次或者1次
边界控制(匹配位置)
() 匹配括号内的原子集合作为一个原子看待
\b 匹配单词的开始或者结束位置
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
\G 匹配上一个匹配的结尾(本次匹配的开始)
\A 匹配字符串开头(类似^,但是不受处理多行选项的影响)
\Z 匹配字符串的结尾或者行尾(不受处理多行选项的影响)
\z 匹配字符串的结尾(类似$,但是不受处理多行选项的影响)
修正模式
贪婪匹配,匹配结果存在歧义时取其长(PHP中为默认模式)
懒惰匹配,匹配结果存在歧义时取其短
U 修正为懒惰模式
i 忽略英文字母大小写
x 忽略空白符
s 让元字符 . 匹配任意字符包括换行符
e 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串
转义
正则中的元字符都要加\进行转义:
$ ( ) * + . [ ] ? \ ^ { } |
非空
.+
大陆手机号
1[34578]\d{9}
^\w+(.w+)*@\w+(.w+)+$
URL
^(https?://)?(\w+.)+[a-zA-Z]+$
php正则表达式简介的更多相关文章
- MySql 正则表达式简介及使用
MySql正则表达式简介及使用 by:授客 QQ:1033553122 简介 正则表达式描述了一组字符串,该字符放置于REGEXP工具后面.作用是将一个正则表达式与一个文本串进行比较. 最简单的正则表 ...
- 【转】正则表达式简介及在C++11中的简单使用教程
正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...
- JS的正则表达式简介
1.JS的正则表达式 1.1 简介 JS的正则表达式比较简单,总体上只分为两个功能:一个是test——用于匹配字符串是否符合规定的正则表达式规则:另外一个是exec——用于获取匹配到的数据. 1.2 ...
- Java连载74-字符串常用方法、正则表达式简介
一.字符串相关的常用方法简介 package com.bjpowernode.java_learning; public class D74_1_StringCommonMethod { pub ...
- Python中正则表达式简介
目录 一.什么是正则表达式 二.正则表达式的基础知识 1. 原子 1)普通字符作为原子 2)非打印字符作为原子 3) 通用字符作为原子 4) 原子表 2. 元字符 1)任意匹配元字符 2)边界限制元字 ...
- 【循序渐进学Python】12.Python 正则表达式简介
正表达式就是一段匹配文本片段的模式,在Python 中 re 模块包含了对正则表达式(regular expression)的支持. 1. 正则表达式的基本概念 1. 通配符 点号( . )可以匹配换 ...
- javascript正则表达式简介
javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String ...
- Ruby自学笔记(四)— 数组,Hash,正则表达式简介
今天学习的是数组和Hash,数组在很多编程语言中都能常常用到. 数组: 数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据:这和JAVA不同,在JAVA中,数组是存储同一类型 ...
- Python re 正则表达式简介
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
随机推荐
- myeclipse中打开java文件中文乱码
中文乱码肯定是编码与解码不一样导致. 1.如果是平时写代码都没有问题,但是打开其他项目时出现这种问题: window->preferences->General->Content T ...
- MyEclipse8.5 无法安装ADT解决办法
打开MYECLIPSE.点击菜单栏的help ->my eclipse configure center .然后add site 指向 https://dl-ssl.google.com/an ...
- Java关键字transient和volatile小结(转)
Java关键字transient和volatile小结(转) transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶的话题,简单总结一下. tran ...
- 新手常见的python报错及解决方案
此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们.后续会不断补充. 目录 1.NameErr ...
- 运行时设计(Design at Run-time)
1.定义 传统软件开发必须经历“设计时”和“运行时”两个阶段,运行时设计,顾名思义,就是在软件运行过程中,对软件进行实时设计修改,而无需再次进行编译,用户即可使用. “运行时设计(Design at ...
- Android音频系统之AudioFlinger(一)
1.1 AudioFlinger 在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点.作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上 ...
- PL/SQL Developer使用技巧、快捷键、存储过程调试
1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools-& ...
- AMQP协议学习
参考这个:http://kb.cnblogs.com/page/73759/ 写的挺好 AMQP协议是一种二进制协议,提供客户端应用与消息中间件之间异步.安全.高效地交互.从整体来看,AMQP协议可划 ...
- JDBC 数据库连接池
http://www.cnblogs.com/lihuiyy/archive/2012/02/14/2351768.html JDBC 数据库连接池 小结 当对数据库的访问不是很频繁时,可以在每次 ...
- Android IBinder的linkToDeath介绍
先看官方解释: The linkToDeath() method can be used to register a IBinder.DeathRecipient with the IBinder, ...