一 需求

匹配user_id = ?后面的数字

二 实现

*对应代码如下:

<?php
$tableShardKey = 'user_id';
$str = "user_id = ?2 and id = ?1";
$pattern = "/.*?$tableShardKey\s*.+?\s*\?(\d+).*?/";
// var_dump($pattern);
preg_match_all($pattern, $str, $mat);
var_dump($mat);
?>

*运行结果:

*结果

匹配user_id = ?后面的数字为$mat[1],即数字2;

三  说明

 此解决方案是preg_match和分组()的联合使用;

此案例中$pattern = "/.*?$tableShardKey\s*.+?\s*\?(\d+).*?/";中的(\d+)为分组中的一个子表达式,即为$matches[1]。

1 正则表达式基础知识

详见:http://www.runoob.com/regexp/regexp-syntax.html

特殊字符:

. 匹配除“\n”之外的任何单个任意字符

限定符:

* 匹配前面的子表达式0次或多次,等价于{0,}

+ 匹配前面的子表达式1次或多次,等价于{1,}

特殊字符?的两种意义

第一种是贪婪匹配限定符,匹配前面的子表达式0次或1次,等价于{0,1};

第二种是非贪婪限定符,即当该字符紧跟在其他任意一个限定符(*  + {n} {n,} {n,m}) 后面时,表示一种非贪婪匹配;非贪婪匹配尽可能少的匹配所搜索的字符串,贪婪匹配是尽可能多的匹配所搜索的字符串,比如对于字符串“111111”,模式"1+?"为非贪婪匹配,匹配结果为1,模式"1+"为贪婪匹配,匹配结果为111111;

Regex—匹配特定字符后的一个字符相关推荐

  1. 输入一个字符后后面一个字符就会自动删除

    台式电脑:键盘上的insert按键退出 笔记本:Fn+insert按键退出

  2. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...

  3. 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *

    6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...

  4. c语言中字符如何转数字排序,常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字。对..,(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺...

    导航:网站首页 > 常用字符的ASCII码值从小到大的排列规律是:空格.阿拉伯数字.对..,(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺 常用字符的ASCII码值从小到大的排列规 ...

  5. EXCEL截取指定字符后的中文字符

    EXCEL截取指定字符后的中文字符,例:银行存款-银行存款-建设银行-活期户,这种结构的字符,以-为分隔,要取出最后的一段.如图: 可以这样写公式:=TRIM(RIGHT(SUBSTITUTE(I2, ...

  6. ReverseFind的用法 ; 查找字符中最后一个字符

    ReverseFind CString::ReverseFind ReverseFind 在一个较大的字符串中从末端开始查找某个字符 CString::ReverseFind int ReverseF ...

  7. java字符串颠倒位置_java字符串第一个字符与最后一个字符颠倒位置测试

    最近做了一个需求,就是 通过OA 连接到我们系统,然后request里 带有base64加密后的字符串,并且第一个与最后一个位置颠倒了,所以需要先恢复正常的加密串,然后在解密. 所以首先工作是 先测试 ...

  8. linux shell 获取字符串最后一个字符 去掉字符串最后一个字符 去掉末尾一个字符 去掉末尾两个字符

    1.获取字符串最后一个字符 实例如下: STR=123456abc FINAL=`echo ${STR: -1}` echo $FINAL # 输出结果 c 或者 STR=123456abc FINA ...

  9. 求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。

    #include<stdio.h> int main() { char a; //输入一个字符 scanf("%c", &a); //后继字符 printf(& ...

最新文章

  1. 3、vue-router之什么是动态路由
  2. python if语句多个条件-Python 条件语句(if..elif..else)
  3. 通信 / HTTP / 什么是 REST 接口
  4. Python入门之中文乱码
  5. 多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧
  6. java移动端接口测试_使用java如何进行接口测试
  7. html宽度自动填充,html – 创建一个td填充表宽度
  8. java数组 0912
  9. php如何修改二维数组的值,php如何改变二维数组的值
  10. tesseract 4.0 ocr图像识别利器,可识别文字。图片越高清越准确
  11. C++使用const提高函数的健壮性
  12. shell之判断文件是否存在
  13. 网站如何做分布式(集群)的大纲
  14. Android QFIL 烧录
  15. html5移动端webscoket实现在线聊天
  16. PhotoShop .psd文件格式读取分析(结合unity)
  17. 证伪主义 | A Little Sight of Falsification
  18. php后台腾讯地图显示折线图
  19. Linux下time/timestamp相关。
  20. 小程序getLocation需要在app.json中声明permission字段

热门文章

  1. p10 android 9,一大波华为手机开启Android 9.0测试 包括Mate 9和P10系
  2. rundeck用户权限管理
  3. React之PixiJS之渲染复杂SVG
  4. unity vector3类中常量对应的值
  5. 1小时搭建可视化数据分析平台redash
  6. HTML提供了许多标记,HTML提供了许多标记,下列选项中,不属于HTML标记的是
  7. 整数线性规划(分支定界法、割平面法)
  8. 无限易(PythonGo)实战
  9. csv逗号分隔符转换_Pandas中处理Csv和Excel数据详解
  10. windows10下Qt环境OpenCV配置【CMake环境】