php正则表达式匹配字符串的重复实例

则表达式获取字符串的重复情况需要对指定的字符串使用括号()进行分组,但不想让圆括号中的字模式匹配的文本出现在包含匹配文本的数组中,可以使用问号冒号?:
把?:放在第一个圆括号的后面就可以。

例如匹配dx在字符串中重复的情况使用/(?:dx)+/,加号表示dx出现1次或是多次

 代码如下 复制代码

<?php
$str='1.aadxaaa 2.bdxdxbb2bbb 3.cccc2ccc 4.dxdxdxdddddxdxdx';
preg_match_all("/(?:dx)+/",$str,$all);
print_r($all);
?>

输出:

Array
(
    [0] => Array
        (
            [0] => dx
            [1] => dxdx
            [2] => dxdxdx
            [3] => dxdxdx
        )

)

基于知识补充

正则表达式中有一些用于重复匹配其前原子的元字符:“?”、“*”、“+”。他们主要的不同是重复匹配的次数不同。

元字符“?”表示0次或1次匹配紧接在其前的原子。例如:/colou?r/匹配“colour”或“color”。
元字符“*”表示0次、1次或多次匹配紧接在其前的原子。例如://可以匹配“

”、“”或“”等HTML标签,并且不严格的控制大小写。
元字符“+”表示1次或多次匹配紧接在其前的原子。例如:/go+gle/ 匹配“gogle”、“google”或“gooogle”等中间含有多个o的字符串。上文中提及的十六进制数字的例子,实际上更加完善的匹配表达式是/0?[ xX][0-9a-fA-F]+/,可以匹配“0x9B3C”或者“X800”等。
要准确地指定原子重复的次数,还可以使用元字符“{}”指定所匹配的原子出现的次数。“{m}”表示其前原子恰好出现m次;“{m,n}”表示其前原子至少出现m次,至多出现n次;“{m,}”表示其前原子出现不少于m次。

以下是一些示例。

/zo{1,3}m/只能匹配字符串“zom”、“zoom”、或“zooom”。
/zo{3}m/只能匹配字符串“zooom”
/zo{3,}m/ 可以匹配以 “z” 开头,“m”结束,中间至少为3个“o”的字符串。
/bo{0,1}u/可以匹配字符串“bought a butter” 中的“bou”和“bu”,起完全等价于/bo?u/。

时间: 2024-07-30 19:19:19

php正则表达式匹配字符串的重复实例的相关文章

正则表达式匹配字符串实现详解

使用正则表达式最常用的是考虑实现正则表达式匹配的判断,在实际工作中经常会遇到什么需要匹配的字符串操作呢?下面我们来看看实现正则表达式匹配字符串的操作实例. 正则表达式匹配字符串实例: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字.26个英文字母或者下划线组成

c-请问匹配字符串中重复字符串内容的正则表达式怎么写?

问题描述 请问匹配字符串中重复字符串内容的正则表达式怎么写? 匹配字符串中重复的字符串内容的正则表达式 或者匹配不重复的字符串内容? 解决方案 ASP 正则表达式匹配字符串提取正则表达式 字符串完全匹配获取正则表达式匹配的字符串 解决方案二: http://blog.csdn.net/zhulinu/article/details/17148511 解决方案三: 用"+"来表示重复一次或多次,建议看看正则表达式

JS使用正则表达式除去字符串中重复字符的方法_javascript技巧

本文实例讲述了JS使用正则表达式除去字符串中重复字符的方法.分享给大家供大家参考,具体如下: 这里演示一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果. 具体代码如下: <html> <head> <title>利用正则表达法除去字符串中的重复字符</title> </head> <body> <script language="javascript">

正则表达式匹配字符串组合

问题描述 正则表达式匹配字符串组合 谁有完整的正则表达式匹配字符串组合的word文档,正则表达式感觉使用的好频繁,想全部仔细的看看 解决方案 正则表达式应用--实例应用 1.验证用户名和密码:(""^[a-zA-Z]w{515}$"")正确格式:""[A-Z][a-z]_[0-9]""组成并且第一个字必须为字母6~16位: 2.验证电话号码:(""^(d{3.4}-)d{78}$"")正

用PHP的正则表达式匹配字符串中只出现两次的数字

问题描述 用PHP的正则表达式匹配字符串中只出现两次的数字 列如:$user = ""aaa128ddd224545frgrg22greb5sdb44vd12vf56"";把只出现两次的数字找出来224456 解决方案 $user = ""aaa128ddd224545frgrg22greb5sdb44vd12vf56"";$zzd='/((d)\2)/is';preg_match_all($zzd$user$adsx);pr

PowerShell中使用正则表达式匹配字符串实例_PowerShell

本文介绍PowerShell中使用match操作符,配合正则表达式从字符串提取指定的内容. 使用正则表达式,除了可以确定字符串是否匹配某一个正则表达式规则之外,另一个很重要的应用就是从字符串中提取出指定的内容.什么意思呢,举个例子,一个字符串中有出现连续的三个数字,我们想很方便的把这三个数字提取出来,那么就可以用正则表达式. 复制代码 代码如下: PS C:\Users\Hong> $str="abc123abc" PS C:\Users\Hong> $pattern=&q

PHP正则表达式匹配字符串中的指定标签

在 PHP 应用中,正则表达式主要用于: •正则匹配:根据正则表达式匹配相应的内容 •正则替换:根据正则表达式匹配内容并替换 •正则分割:根据正则表达式分割字符串 常用 preg_match_all() preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE . 语法: int preg_match_all( string pattern, string subject, array matches [, int fla

php中如何用preg_match_all匹配字符串

问题描述 php中如何用preg_match_all匹配字符串 <div class="Wrapper"> <div class="colImg"> <a href="http://store.shopping.yahoo.co.jp/matsunami/fcdm3.html"></a> </div> <div class="wrCol cf"> <

正则表达式匹配解析过程探讨分析(正则表达式匹配原理)_正则表达式

已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化.减少我们正则表达式书写匹配Bug.我们不得不进一步深入了解正则表达式执行过程了.下面我们一起学习,分析下正则表达式执行过程.我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐.优化工具推荐(regexbuddy推荐).要了解正则表达式解析过程前,我们先来熟悉几个概念. 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎