目录

  • 一、需求
  • 二、分析
    • 1、共同特征
    • 2、详细分析
      • 1、匹配数字
      • 2、匹配英文问号:0个或1个
      • 3、匹配量词中的一个【桶,盒,对,只,根,条】
      • 4、匹配空格0个或多个
      • 5、针对汉字匹配 /u
    • 3、正则表达式
  • 三、代码
  • 四、打印
  • 五、正则语法

一、需求

  • 1、现有词语如下
1桶辣条
2盒 辣条
2020-08  10对辣条
99只辣条
39根  辣条
88?条 辣条
  • 2、需要获取辣条的数量

二、分析

1、共同特征

  • 数字 + 0个或1个英文问号 + 量词 + 0个或多个空格 + 辣条

2、详细分析

1、匹配数字

  • \d:匹配一个数字字符。等价于[0-9]
  • +:匹配前面的子表达式一次或多次,相当于{1,}

2、匹配英文问号:0个或1个

  • \?? 或者 \?{0,1}
  • 由于 ? 是特殊字符,所以要加上转义字符 \

3、匹配量词中的一个【桶,盒,对,只,根,条】

  • [桶|盒|对|只|根|条]

4、匹配空格0个或多个

  • \s* 或者 \s{0,}

5、针对汉字匹配 /u

  • /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字)
  • /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象)
  • /s 表示将字符串视为单行来匹配

3、正则表达式

  • /(\d+)\??[桶|盒|对|只|根|条]\s{0,}辣条/u
  • preg_match_all匹配多个时,每一个()里对应一个结果数组,默认匹配返回所有内容,preg_match_all返回的数组数量 = 1 + ()的个数

三、代码

public function test() {$words = ['1桶辣条','2盒 辣条','2020-08  10对辣条','99只辣条','39根  辣条','88?条 辣条',//来几个不对的数据'99斤辣条','88根九辣条'];$pattern = '/(\d+)\??[桶|盒|对|只|根|条]\s{0,}辣条/u';foreach ($words as $word) {preg_match_all($pattern, $word, $result);echo "{$word}<br/>";var_export($result);echo '<br/><br/>';}
}

四、打印

1桶辣条
array ( 0 => array ( 0 => '1桶辣条', ), 1 => array ( 0 => '1', ), )2盒 辣条
array ( 0 => array ( 0 => '2盒 辣条', ), 1 => array ( 0 => '2', ), )2020-08 10对辣条
array ( 0 => array ( 0 => '10对辣条', ), 1 => array ( 0 => '10', ), )99只辣条
array ( 0 => array ( 0 => '99只辣条', ), 1 => array ( 0 => '99', ), )39根 辣条
array ( 0 => array ( 0 => '39根 辣条', ), 1 => array ( 0 => '39', ), )88?条 辣条
array ( 0 => array ( 0 => '88?条 辣条', ), 1 => array ( 0 => '88', ), )99斤辣条
array ( 0 => array ( ), 1 => array ( ), )88根九辣条
array ( 0 => array ( ), 1 => array ( ), )

五、正则语法

  • 正则表达式 - 语法
  • 正则表达式手册

PHP中preg_match_all正则匹配出需要的内容相关推荐

  1. python中的正则匹配知识点

    @author: fighter Python正则表达式知识点整理. 概述:在处理字符串时,经常会遇到查找符合某些复杂规则字符串的需求,正则表达式就是用于描述这些规则的工具. 首先,我们先掌握一下py ...

  2. Python中的 正则匹配

    正则匹配的基本格式 import re ret=re.match("正则表达式","要匹配的字符串") ret.group( ) 提取数据 匹配单个字符: . ...

  3. Word中类似正则匹配的查找替换通配符的使用详解

    Word查找栏代码·通配符一览表 序号 清除使用通配符复选框 勾选使用通配符复选框 特殊字符 代码 特殊字符 代码or通配符 1 任意单个字符 ^? 任意单个字符 ? 2 任意数字 ^# 任意数字(单 ...

  4. 正则匹配html标签和内容,正则匹配HTML标签(不保留内容和保留内容、过滤标签的的属性)...

    1.匹配双标签(包括内容),过滤标签,不保留内容. var reg1 = /]*>(.|\n)*/gi; var str1 = '我是被删除的123123'; console.log(str1. ...

  5. 正则匹配出字符串中两串固定字符区间的所有字符

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 效果:匹配两个字符串区间的字符串 代码: var dd=[];var str = 'is_img&qu ...

  6. Java与Python中的正则匹配

    Java实现 import java.util.regex.Matcher; import java.util.regex.Pattern;public class Test {public stat ...

  7. VSCode中常用正则匹配

    日常开发中,经常会遇到需要注释先前遗留的大量console相关的输出日志代码,在vscode中可以使用当前页搜索(CTRL + F)或全局搜索的方式来批量注释或删除. 当前页  全局 1.注释当前页所 ...

  8. javascript中的正则匹配函数exec(),test(),match()

    test() var str = "cat"; var reStr = /cat/; alert(reStr.test(str)); 输出为:true 它的返回值为true or ...

  9. java中使用正则匹配所有标点符号

    if (endStr.matches("[\\pP\\p{Punct}]"))

  10. 正则匹配括号里面的内容不包括括号_python正则表达式

    是一个计算机科学概念用于使用单个字符串来描述,匹配某个规则的字符串常常用来检索,替换某些模式的文本 正则的写法 .(点号):表示任意一个字符,除了 [](中括号),匹配括号中列举的范围,如[0-9]代 ...

最新文章

  1. linux加微软的数据库,在Linux上使用Microsoft SQL – 安装SQL
  2. c语言通过域组策略下发软件,windows 2008 server 域环境通过组策略下发计划任务(示例代码)...
  3. SNS网站是否应该实行邀请制、实名制?
  4. Javascript操作table,tr,td和表格CSS样式设置小常识
  5. js 函数定义三种方式
  6. 洞悉物联网发展1000问之从精益管理到互联工业带来的启示是什么?
  7. 将JPG文件作为EXE执行
  8. js中常用的操作字符串的方法大全
  9. RHE5服务器配置——Samba服务器
  10. 工作125:各个接口需要的token不同 token是获取数据的关键
  11. 浅谈“三层结构”原理与用意(转帖)
  12. Python动态导入模块、类
  13. python下路径问题及模型存储
  14. ssrs行高_SSRS中的备用行颜色
  15. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)
  16. HDOJ--1875--畅通工程再续
  17. 用 new 还是用 alloc/init
  18. 如何查看excel中的vba代码
  19. 景区门票预约系统如何开发
  20. C语言求解一元二次方程代码

热门文章

  1. 视觉在无人驾驶中的应用及分类_紫外光在机器视觉中的应用
  2. 贵州省二级分类土地利用数据(矢量)
  3. html怎么读取2进制视频,IE 中如何读取二进制文件的内容?
  4. 商城购物车php代码,php实现商城购物车的思路和源码分析
  5. linux定时器王贤才,《linux内核设计与实现》 学习笔记(十七)---设备和模块
  6. mysql innodb远程备份_详细说明MySQL备份、还原、innoDB打开
  7. php 域名方法,PHP获取域名方法
  8. python windows7下创建~/.pypirc文件
  9. HackerOne年度报告:安全众测推出四年,成果几何?
  10. 使用ClassLoader加载资源详解