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);

原文地址:https://www.cnblogs.com/dcrq/p/11047159.html

时间: 2024-10-10 20:31:40

PHP面试 PHP基础知识 五(正则表达式)的相关文章

JavaScript基础知识梳理----正则表达式

JavaScript基础知识梳理----正则表达式 1.创建 方式:---字面量:var 变量名=/表达式/模式修饰符 ---构造函数:var 变量名=new RegExp(“表达式”,“模式修饰符”) 说明: 表达式 单个字符和数字 . 匹配除换行符之外的任意字符 [a-z0-9] 匹配方括号中的任意字符 [^a-z0-9] 匹配不在方括号中的任意字符 \d 匹配数字 \D 匹配非数字 \w 匹配字母 \W 匹配非字母 空白字符 \0 匹配null字符 \b 匹配空格符 \f 匹配进纸符 \n

ASP.NET Core 2.2 基础知识(五) 环境

原文:ASP.NET Core 2.2 基础知识(五) 环境 一.环境变量 系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如: 新建一个 WebAPI 项目,修改 Configure 方法: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ...... { app.R

Linux 基础知识(五)

一.每12小时备份并压缩/etc/目录到/back目录中,保存文件名格式为,etc-年-月-日-时-分.tar.gz) crontab -e *12/*** /usr/bin/tar -czf `date +%F-%H-%M`-etc.tar.gz /etc/ ??二.rpm包管理功能总结以及实例应用演示rpm命令:rpm [OPTIONS] [PACKAGE_FILE]安装:-i, --install升级:-U, --update, -F, --freshen卸载:-e, --erase查询:

死磕面试 - Dubbo基础知识37问(必须掌握)

作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基础知识,或许会给正在面试.准备面试的小伙伴一点帮助. 1.dubbo是什么? dubbo是阿里的开源的基于java的高性能rpc分布式服务框架,现已(2018)成为Apache基金会的孵化项目 2.为什么要用到dubbo(你们技术选型的时候为什么要考虑到用它)? 因为它是阿里的开源项目,国内很多的互

C# 基础知识 (五).变量类型和字符串处理

        这篇文章是阅读<C#入门经典(Beginning C#)>书籍里面的内容,作者Karli Watson.主要包括自己缺乏的一些C#基础知识和在线笔记使用,文章主要包括C#简单变量类型和复杂变量类型.命名规则.隐式转换和显示转换.变量字符串处理等内容,都是非常基础的知识,希望对初学者有所帮助. 一. C#简单变量类型和命名规则         简单类型组成应用程序中基本构件的类型,其中主要有以下类型: 整数类型 sbyte(-128~127之间整数) byte(0~255之间整数

Python基础知识(五)------字典

Python基础知识(四)------字典 字典 一丶什么是字典 ? dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ? 键: 必须是可哈希,(不可变的数据类型),必须是唯一的 ? 值: 任意数据类型 特点: ? 查询的效率非常高,通过key来查找元素 ? 内部使用key来计算一个内存地址(暂时), hash算法,key必须是不可变的数据类型(key 必须是可哈希的数据类型),key必须是不可变的数据类型 ? 字典是无序的, python3.6版本以上,默

python基础知识五

数据结构基本上就是---它们可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python中有三种内建的数据结构---列表.元祖和字典. 我们将会学习如何使用它们,以及它们如何使编程变得简单. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了.只不过在你的购物表上,可能每样东西都独自占有一行,而在python中,你在每个项目之间用逗号分隔. 列表中的项目应该包括在方括号中,这样pyt

javascript基础知识之正则表达式(regular expression)

一种字符串匹配的模式,用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等.注意:在javascript中正则表达式也是一种对象1:创建正则表达式两种方式:隐式创建(文字量方法)和显示创建(使用构造函数)eg:文字量方法:var regExp = /pattern/flags;将文字量的正则表达式赋值给一个变量,包含在两个斜杠之间的一个或多个字符,在后一个斜杠的后面,可以指定一个或多个选项.var regExp1 = /abc/;var regExp2 = /a

数组、栈、堆(java基础知识五)

1.数组概述.定义格式 * A:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引用数据类型. * B:数组定义格式 格式1:数据类型[] 数组名;----int[] arr; 格式2:数据类型 数组名[];----int arr[]; * C:数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致, 2.数组初始化.动态初始化 * A:什么是数组的初始化 Java中的数组必须先初始化,然后才能使用. 所谓初始化:就是