正则表达式的向前、向后匹配

正则中向前匹配和向后匹配非常强大好用,直接代码。

代码示例:

// 向后匹配
// (?=)  匹配
// (?!)  不匹配
$str = "abcx1 abcy2 abcz3";

// 匹配后边是y的abc
$a = preg_replace(‘/abc(?=y)/‘, ‘0‘, $str);// abcx1 0y2 abcz3

// 匹配后边不是y的abc
$b = preg_replace(‘/abc(?!y)/‘, ‘1‘, $str);// 1x1 abcy2 1z3

// ===================================

// 向前匹配 注意有小于号
// (?<=)  匹配
// (?<!)  不匹配

$str = "1xabc 2abc 3zabc";

// 匹配前一个字符是数字的abc
$a = preg_replace(‘/(?<=\d)abc/‘, ‘0‘, $str);// 1xabc 20 3zabc

// 匹配前一个字符不是数字的abc
$b = preg_replace(‘/(?<!\d)abc/‘, ‘1‘, $str);// 1x1 2abc 3z1

// ===================================

// 同时向前向后匹配

$str = ‘XXX13188887777YYY123ZZZ‘;// 找到一个1开头的11位数字,并且前后都不是数字的,在数字前加一个 mobile:

// $1是刨除掉向前匹配的括号 注意
$re = preg_replace(‘/(?<=[^0-9])(1\d{10})(?=[^0-9])/‘, ‘ mobile:$1 ‘, $str);// XXX mobile:13188887777 YYY123ZZZ
时间: 2024-10-28 16:43:17

正则表达式的向前、向后匹配的相关文章

Java 正则表达式 向前、向后匹配

//向后匹配 String a = "I paid $90 for 10 oranges, 12 pears and 8 apples. I saved $5 on "; Pattern p = Pattern.compile("(?<=\\$)\\d+"); Matcher m = p.matcher(a); while (m.find ()) { String group = m.group (); System.out.println (group);

正则表达式里字符串”不包含”匹配技巧

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤"hede"字串,但这种写法是错误的.我们可以这样写:[^hede],但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含'h','e','d'三个但字符.那什么样的正则表达式能过滤出不包含完整"hello"字串的信息呢? 事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确.就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问

普通选项卡+自动播放功能+向前/向后按钮 原生js

今天做了幻灯片,主要功能包括:普通选项卡,向前/向后播放按钮,向前?向后播放功能,自动播放功能 要实现简单选项卡功能是没有问题的,但是添加功能就出现各种各样的问题了 遇到的问题:1 下标问题 2普通选项卡与向前/向后功能结合的时候冲突,可以向前/向后播放,但是再想实现普通选项卡就出问题了3 添加向前/向后按钮后,html布局下移4 添加向前/向后按钮的时候,我用img标签,显然这个不适用,不能很好的调节垂直居中5 当鼠标放在向前/向后按钮上的时候,闪烁,点击的时候也闪烁,而且还点击失效 解决方法

Caffe计算net、layer向前向后传播时间

在caffe中计算某个model的整个net以及各个layer的向前向后传播时间,可以使用下面的命令格式: ./build/tools/caffe time --model=examples/mnist/mytest/execise1_train_test.prototxt -iterations 100 -gpu 0 其中model指向待测model的prototxt文件,-iterations后面的100表示迭代100次,-gpu 0 表示使用第一张显卡来计算时间,若使用CPU计算,将sol

正则表达式(四)——位置匹配(环视、单词分界符、锚点)

这次的内容是有关于正则表达式中的位置匹配,它包含的内容有两部分,一部分是较为简单的锚点和单词分界符,一部分是较为复杂的零宽断言.复杂有复杂的好处,写起来复杂,能匹配的位置也就越复杂.零宽断言又可以叫做环视.这一部分是重点内容. 锚点 标准的锚点有这么几个,它们是^,$.在普遍的,不涉及任何模式的情况下,脱字符(^)匹配的是文本的起始位置.而$匹配的则是文本末尾的换行符\n之前的位置.举个例子 正则表达式:s$ 上面这个正则表达式的意思就是匹配以字符[s]结尾的行,即[······s/n]这样的字

一个可以使用多个正则表达式进行多次尝试匹配,并进行替换的Excel VBA自定义函数(UFD)

以下代码可使用多个正则表达式对目标单元格进行多次匹配尝试,如匹配成功,将停止尝试匹配其他正则表达式,并且使用该正则表达式相对应的替换表达式进行替换,返回替换结果. 使用前需要做Early Binding.即在VBE编辑器中,选择菜单栏中的Tool - Reference,如图: 弹出如下图的对话框后,选择Microsoft VBSscript Regular Expression 5.5,打钩,点OK. 此UDF的使用方法为: Text参数:需要进行处理的原始文字或单元格. MatchPatte

正则表达式入门(六)匹配unicode和其他字符

匹配unicode字符有时候我们需要匹配ASCII范围之外的字符. "Qu'est-ce que la tolérance? c'est l'apanage de l'humanité. Nous sommes tous pétris de faiblesses et d'erreurs; pardonnons-nous réciproquement nos sottises, c'est la première loi de la nature." -Voltaire (1694–1

1、三次握手原则 2、什么是正则表达式以及作用 3、匹配身份证和电话号码的正则表达式 4、什么是运动

1.三次握手原则 Http协议三次握手过程 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknow

正则表达式的四大操作(匹配,切割,替换,获取)

这里只介绍js中对正则表达式的相关操作,关于正则表达式的详细介绍,请参考http://manual.phpv.net/regular_expression.html 一.js中正则表达式操作 1.定义正则表达式 1)定义正则表达式有两种形式,一种是普通方式,一种是构造函数方式.2)普通方式:var reg=/表达式/附加参数 附加参数:用来扩展表达式的含义,目前主要有三个参数:g:代表可以进行全局匹配.i:代表不区分大小写匹配.m:代表可以进行多行匹配. 例子:var reg=/a*b/;var