当前位置:首页 » 编程语言 » php正则表达式中的或

php正则表达式中的或

发布时间: 2023-08-20 06:27:02

php 正则表达式总结

PHP 正则表达式总结

1.PHP中两个常用的正则函数

a.preg_match 正则函数,以perl语言为基础

语法:preg_match( mode,string subject,array matches)

说明:mode参数---- 正则的模块,也就是正则表达式(语法)

subject参数---- 正则的内容

matches参数---- 正则的结果(获得一个数组的形式)

b.ereg 正则函数,以POSIX基础(Unix、Script)

语法:ereg(mode ,string subject, array regs)

2.正则表达式中包括的元素

a.原子(普通字符:a-z A-Z 0-9 、原子表、转义字符)

b.元字符(有特殊功能的字符,如:# 、*)

c.模式修正符(系统内置部分字符 i、m、S、U ...)

3.正则表达式中的“原子”

a.a-z A-Z _ 0-9 //最常见的字符

b.(abc)(skd) //用圆括号包含起来的单元符号(一个整体)

c.[abcs][^abd] //用方括号包含的原子表,原子表中的^代表排除或相反的内容

d.转义字符

d 包含所有的数字[0-9]

D 除所有数字外[^0-9]

w 包含所有英文字符[a-z A-Z 0-9]

W 除所有英文字符外[^a-z A-Z 0-9]

s 回车,换行等

......

注明: 圆括号 必须是整体才能匹配; 方括号 只要是其子集,都可以匹配(内容存在)

4.正则表达式元字符

* 匹配前一个内容的0次1次或多次

. 匹配内容的0次1次或多次,但不包含回车换行(代指自己,任何内容)

+ 匹配前一个内容的1次或多次

? 匹配前一个内容的.0次或1次

| 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配,类似一个单词匹配)

^ 匹配字符串首部内容

$ 匹配字符串尾部内容

b 匹配单词边界,边界可以是空格或者特殊符合(有单词分界符,类似空格)

B 匹配除带单词边界意外内容(无单词分界符)

{m} 匹配前一个内容的重复次数为M次

{m,} 匹配前一个内容的重复次数大于等于M次

{m,n} 匹配前一个内容的重复次数M次到N次

( ) 合并整体匹配,并放入内存,可使用1 2…依次获取 (调用放入内存中的内容)

5.运算顺序

依然遵循从左到→右的运算规则

优先级:

( ) 圆括号因为是内存处理所以最高

* ? + { } 重复匹配内容其次

^ $ b 边界处理第三

| 条件处理第四

最后按照运算顺序计算匹配

6.模式修正符

模式修正符是为正则表达式增强和补充的一个功能,使用在正则之外 例如:/ 正则 / U

常用修正符:

i 正则内容在匹配时候不区分大小写(默认是区分的)

m 在匹配首内容或者尾内容时候采用多行识别匹配

s 将转义回车取消是为单行匹配如. 匹配的时候

x 忽略正则中的空白

A 强制从头开始匹配

D 强制$匹配尾部无任何内容 n

U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束, 常用在采集程序上的正则表达式

7.匹配功能

preg_match_all 全部匹配函数

语法:preg_match_all ( string pattern, string subject, array matches [, int flags] )

说明:对结果排序使 $matches[0] 为全部模式匹配的数

用途:截取比较详细的内容,采集网页,分析文本

8.替换功能

preg_replace 正则替换函数

语法:preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

说明:通过正则表达式来替换相关内容,类似之前学过的str_replace字符串替换,但 功能要强于它

提示:1、替换内容可以是一个正则也可以是数组正则

2、替换内容可以通过修正符e来解决替换执行内容

用途:替换一些比较复杂的内容上,也可以用于内容的转换上

9.分割功能

preg_split 正则切割

语法:preg_split ( string pattern, string subject [, int limit [, int flags]] )

说明:通过正则表达式来切割相关内容,类似之前学过的explode切割函数,但explode 只能按照一种方式切割有局限性。

;

❷ PHP正则表达式的使用技巧

PHP正则表达式的定义

用于描述字符排列和匹配模式的一种语法规则 它主要用于字符串的模式分割 匹配 查找及替换操作

PHP中的正则函数

PHP中有两套正则函数 两者功能差不多 分别为

一套是由PCRE(Perl Compatible Regular Expression)库提供的 使用 preg_ 为前缀命名的函数

一套由POSIX(Portable Operating System Interface of Unix )扩展提供的 使用以 ereg_ 为前缀命名的函数 (POSIX的正则函数库 自PHP 以后 就不在推荐使用 从PHP 以后 就将被移除)

由于POSIX正则即将推出历史舞台 并且PCRE和perl的形式差不多 更利于我们在perl和php之间切换 所以这里重点介绍PCRE正则的使用

PCRE正则表达式

PCRE全称为Perl Compatible Regular Expression 意思是Perl兼容正则表达式

在PCRE中 通常将模式表达式(即正则表达式)包含在两个反斜线 / 之间 如 /apple/

正则中重要的几个概念有 元字符 转义 模式单元(重复) 反义 引用和断言 这些概念都可以在文章[ ]中轻松的理解和掌握

常用的元字符(Meta character)

元字符 说明

/A 匹配字符串串首的原子

/Z 匹配字符串串尾的原子

/b 匹配单词的边界 //bis/ 匹配头为is的字符串 /is/b/ 匹配尾为is的字符串 //bis/b/ 定界

/B 匹配除单词边界之外的任意字符 //Bis/启局 匹配单词 This 中的 is

/d 匹配一个数字 等价于[ ]

/D 匹配除数字以外任何一个字符 等价于[^ ]

/w 匹配一个英文字母 数字或下划线 等价于[ a zA Z_]

/W 匹配除英文字母 数字和下划线以外任何一个字符 等价于[^ a zA Z_]

/s 匹配一个空白字符 等价于[/f/t/v]

/S 匹配除空白字符以外任何一个字符 等价于[^/f/t/v]

/f 匹配一个换页符等价于 /x c 或 /cL

匹配段旁锋一个换行符 等价于 /x a 或 /cJ

匹配一个回车符等价于/x d 或 /cM

/t 匹配一个制表符 等价于 /x /或/cl

/v 匹配一个垂直制表符 等价于/x b或/ck

/oNN 匹配一个八进制数字

/xNN 匹配一个十六进制数字

/cC 匹配一个控制字符

模式修正符(Pattern Modifiers)

模式修正符在忽略大小写 匹配多行中使用特别多 掌握了这一个修正符 往往能解决我们遇到的很多问题

i -可同时匹配大小写字母

M -将字符串视为多行

S -将字符串视为单行 换行符做普通字符看待 使 匹配任何字符

X -模式中的空白忽略不计

U -匹配到最近的字符串

e -将替换的字符串作为表达使用

格式 /apple/i匹配 apple 或 Apple 等 忽略大小写 /i

PCRE的模式单元

// 提取第一位的属性

/^/d{ } ([/W])/d{ }// /d{ }$匹配 / / 等字符串 但上述正则表达式不匹配 / 的格式 这是因为模式 [/W] 的结果 / 已经被存储 下个位置 / 引用时 其匹配模式也是字符 /

当不需要存储匹配结果时使用非存储模式单元 (? )

例如/(?:a|b|c)(D|E|F)// g/ 将匹配 aEEg 在一些正则表达式中 使握晌用非存储模式单元是必要的 否则 需要改变其后引用的顺序 上例还可以写成/(a|b|c)(C|E|F)/ g/

PCRE正则表达式函数

以下为引用的内容

preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace()

函数的具体使用 我们可以通过PHP手册来找到 下面分享一些平时积累的正则表达式

匹配action属性

以下为引用的内容

$str = ; $match = ; preg_match_all( //s+action=/ (?!)( *?)/ /s/ $str $match); print_r($match);

在正则中使用回调函数

以下为引用的内容

/** * replace some string by callback function * */ function callback_replace() { $url = ; $str = ; $str = preg_replace ( /(?<=/saction=/ )(?!)( *?)(?=/ /s)/e search(/$url // ) $str ); echo $str; } function search($url $match){ return $url / $match; }

带断言的正则匹配

以下为引用的内容

$match = ; $str = xxxxxx cn bold font paragraph text

; preg_match_all ( /(?<=<(/w{ })>) *(?=</// >)/ $str $match ); echo 匹配没有属性的HTML标签中的内容 ; print_r ( $match );

替换HTML源码中的地址

以下为引用的内容

$form_ = preg_replace ( /(?<=/saction=/ |/ssrc=/ |/s)(?!|javascript)( *?)(?=/ /s)/e add_url(/$url / // / ) $form_ );

lishixin/Article/program/PHP/201311/21027

❸ PHP正则表达式匹配0个或多个指定的字符

proct-1349.html
是对应 test.php?action=proct&rid=1349

proct.html

的rid怎么办?为 空?
RewriteRule ^/?([a-zA-Z]{1,})(-([0-9]{1,}))?\.html$ test.php?action=$1&rid=$3
123456789

热点内容
行车记录仪存储卡多大合适 发布:2025-02-05 09:35:21 浏览:109
oppo手机锁屏密码忘了怎么办 发布:2025-02-05 09:33:50 浏览:121
phprsa算法 发布:2025-02-05 09:33:48 浏览:228
快写编译器 发布:2025-02-05 09:29:15 浏览:587
java随机验证码 发布:2025-02-05 09:27:45 浏览:634
word打开密码怎么设置 发布:2025-02-05 09:26:58 浏览:975
核桃编程课导 发布:2025-02-05 09:25:36 浏览:496
编译内核源码 发布:2025-02-05 09:17:43 浏览:333
云计算与编程语言 发布:2025-02-05 09:13:17 浏览:654
Android三国杀 发布:2025-02-05 09:05:55 浏览:243