PHP面试 PHP基础知识 六(正则表达式)
正则表达式
正则表达式的作用
分割、查找、匹配、替换字符串
分隔符:正斜线(/)、hash符号(#)、以及取反符号(~)
通用原子:\d(代表十进制的0-9)、\D (取反除了0-9)、\w(数字、字母、下划线)
\W(除了数字字母下划线)、\s(空白符)、\S(除了空白符)
元字符: . * ? ^ $ + {n} {n,m} [] () [^] | [-]
. 点代表的意思是除了换行符的任意字符
* 代表匹配前面的内容出现0次或者多次
? 代表匹配前面的内容出现0次或者1次
^ 代表匹配输入字符串的开始位置
$ 代表匹配输入字符串的结尾位置
+ 代表匹配前面的内容出现1次或者多次
{n} n是一个非负整数,匹配确定的n次
{n,m} n和m均为非负整数,最少匹配n次最多匹配m次
[ ] 定义匹配字符范围
() 标记一个子表达式的开始和结束位置
[^] 取反 除了中括号里面的其他都匹配
| 或者的意思
[-] 代表的是一个范围 比如[ 0 - 9 ]
模式修正符:i m e s U x A D u
i 不区分大小写
m 将字符串视为多行,不管是那行都能匹配
e 配合函数preg_replace()使用 //PHP7.0已经取消
s 修正点和换行
U 只匹配最近的一个字符串,不重复匹配 取消贪婪模式
x 将模式中的空白符忽略
A 强制从目标字符串开头匹配
D 使用$限制结尾字符,则不允许结尾有换行
u 中文匹配
后向引用:
$str = "<p>abc</p>"; $pattern = '/<p>(.*)<\/p>'; //将str字符串替换成不带p标签的
preg_replace( $pattern, '\\1',$str ); //反斜线1代表的意思就是第一个括号里面匹配到的内容
贪婪模式
$str ="<p>abc</p><p>bcd</p>"; $pattern = '/<p>.*?<\/p>/'; // ?可以取消贪婪 preg_replace_all($pattern, '\\1',$str); $pattern = '/<p>.*<\/p>/U'; //U也可以取消贪婪
正则表达式PCRE函数:preg_match() preg_match_all() preg_replace() preg_split()
中文匹配:UTF-8汉字编码范围是0x4e00-0x9fa5 ANSI(gb2312)环境下 0xb0-0xf7 , 0xa1-0xfe
UTF-8要使用u模式修正符使模式字符串被当成UTF-8 ANSI(gb2312)环境下要使用chr将Ascii码转换为字符
$str = "中国你好";
$pattern = '/[\x{4e00}-\x{9fa5}]+/u'; //utf-8
$pattern = '/['.chr(0xb0).'-'.chr(0xf7)']['.chr(0xa1).'-'.chr(0xfe)']/';
preg_match($pattern ,$str ,$match);
var_dump($match);
PHP面试 PHP基础知识 六(正则表达式)的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- python基础知识六 文件的基本操作+菜中菜
基础知识六 文件操作 open():打开 file:文件的位置(路径) mode:操作文件模式 encoding:文件编码方式 f :文件句柄 f = open("1.t ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- C#基础知识之正则表达式
正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 实例 下面的实例匹配了以 'S' 开头的单词: using Syste ...
- 死磕面试 - Dubbo基础知识37问(必须掌握)
作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基 ...
- PHP面试 PHP基础知识 十(网络协议)
网络协议 HTTP协议状态码 状态分为五大类:1XX.2XX.3XX.4XX.5XX 1XX:信息类状态码 表示接受请求正在处理 2XX:success 成功状态码 请求正常处理完毕 3XX:重定 ...
- Go语言核心36讲(Go语言基础知识六)--学习笔记
06 | 程序实体的那些事儿 (下) 在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论.还记得吗? 最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关 ...
- java 基础知识八 正则表达式
java 基础知识八 正则表达式 正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待 ...
- java 基础知识六 字符串1
java 基础知识六 字符串1 String 不是java的基本数据类型 String 不是java的基本数据类型 String 不是java的基本数据类型 字符串是是一个字符序列 1.创建 创建 ...
随机推荐
- PAT 1051 Pop Sequence (25 分)
返回 1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the ...
- java线程池监控
原因 最近在完善公司的基础发布平台的时候,使用到了一线程去做一些异步的事情,在开发环境和测试环境验证没有任何问题,但是在程序在生产运行一段时间后,发现没有得到自己想要的结果,为此开始了漫长的排查bug ...
- WebBrowser是IE内置的浏览器控件
WebBrowser是IE内置的浏览器控件.WebBrowser是IE内置的浏览器控件.WebBrowser是IE内置的浏览器控件.重要的事情说三遍,原因是一开始使用的时候就在这踩了坑. WebBro ...
- jQuery.Deferred exception: a.indexOf is not a function TypeError: a.indexOf is not a function
jq版本问题 3.2换成1.9就可以了
- 内核module读取进程页目录
根据当前CR3寄存器内容,读取对应物理内存中的页目录页,并进行解析 1: void dumpPageDirectoryEntry(u32 entry) 2: { 3: u8 present; 4: u ...
- 二、检索语句 SELECT、ORDER BY、WHERE
介绍如何使用SELECT语句从表中检索一个或多个数据列 第二章: SELECT语句 SQL语句可以在一行给出,也可以分成许多行,分成多行更容易调试. 多条SQL语句必须以分号 分隔.多数DBMS不 ...
- ARC080E
倒着考虑 每次拿出的第一个必须是奇数位置,第二个必须是偶数位置.每次删数都不能跨过已被删去的位置. 事实上只要开个堆维护一下区间就行了.但是众所周知我zz,所以我写的线段树 #include<i ...
- SpringBoot传递单一参数时@RequestParam和@RequestBody的区
用SpringBoot框架做项目时,经常需要前端给后端传递参数,如果需要多条参数,通常的做法是把这些参数封装为一个对象来传递,前端用POST方式调用.但有时会遇到后端只需要一条参数(比如一个Strin ...
- vue中checkbox 样式自定义重写;循环遍历checkbox,拿到不同的v-model绑定值;及获取当前checked 状态,全选和全不选等功能。
开始写这个功能,不得不吐槽原始的checkbox,灰色小方块的丑陋,虽说eleUI,mintUI,等各种框架的单复选框已经对其优化,但还是不想要这种.那我们就来研究一下怎么处理它. <secti ...
- 使用TPL取回Task中的运行结果的三种方式
概念:TPL( Task Parallel Library) 任务并行库 使用Task类执行多线程操作要比直接使用自己手工创建Thread效率高很多. 默认情况下,TPL使用线程池中的线程执行Task ...