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自带的方法,但功能十 ...
随机推荐
- Android系统权限及签名
Android系统权限及签名 2015-03-23 19:13:33CSDN-chen52671-点击数:50 Android权限及签名 引子 现象:系统中的一个定制Service,服务是 ...
- DIV 浮动存不占空间
DIV 浮动存不占空间比如<div style="width:80px; border:1px solid #333"><div style="floa ...
- 修改sqlserver的数据库排序规则语句
alter database SOETMS collate Chinese_PRC_CI_AS
- aspx 文件上传和下载,多文件上传
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MultiFileUpload. ...
- UIView你知道多少
转载自:http://www.cnblogs.com/likwo/archive/2011/06/18/2084192.html 曾经有人这么说过,在iphone里你看到的,摸到的,都是UIVie ...
- cc2530 T3定时器控制引脚P1_1的亮灭
/**************************************************************************** * 文 件 名: main.c * 作 者: ...
- 最后的配置部分:LNMP+Tomcat
Nginx与PHP部分 mkdir /www/php -p echo -e "<?php\n\tphpinfo();\n?>" > /www/php/index. ...
- javascript 闭包理解例子
function Jquery(){ this.name = 'ysr'; this.sex = 'man'; return { x: this, age : 26 } } var b = new J ...
- php中__clone() shallow copy 只是浅复制
什么是浅复制呢? 简单一点,就是说复制一个对象的时候,如果对象$Obj的一个属性的类型是引用类型的,比如 $person这个属性,指向的是一个 叫做 $objPerson的一个引用, 那么复制$Obj ...
- MAC OS X 10.10 应用程序下载失败后lunchpad产生灰色图标的解决办法
方法如下:打开应用程序- 实用工具 - 终端. 以此出入如下字符 defaults write com.apple.dock ResetLaunchPad -bool true killall Doc ...