正则表达式替换排除特定情况

1.只替换第一次出现的字符串“红豆”;

$s="i‘am carl 小红豆杉苗 <a href=‘abc‘>dfsaf<a href=\"fdsafdsaf\">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few";
$r = preg_replace(‘/红豆/i‘, ‘绿豆‘,$s,1);
var_dump($r);

结果

string(104) "i‘am carl 小绿豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few"

  

2.替换所有外部不带a标签的字符串”红豆“;

$s=‘i\‘am carl 小红豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few‘;

$r = preg_replace(‘/(?!<a .*?>.*?)红豆(?![^<]*<\/a>)/i‘, ‘绿豆‘,$s);

//$r = preg_replace(‘/红豆/i‘, ‘绿豆‘,$s,1);
var_dump($r);

结果

string(104) "i‘am carl 小绿豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af绿豆dsa</b>few"

  

PS: 如有漏洞,望不吝指教。  

  

时间: 2024-10-30 17:33:11

正则表达式替换排除特定情况的相关文章

Python 正则表达式替换特定字符为标志的字符串

Requirement: [ { "code": "AF", "value": 53, "name": "Afghanistan" }, { "code": "AL", "value": 117, "name": "Albania" }, { "code": "DZ",

notepad++正则表达式替换字符串详解

表达式 说明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字.[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a&q

[转]notepad++正则表达式替换字符串详解

原文:http://blog.csdn.net/qinboecjtu/article/details/6035028 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: 表达式 说明 /t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "

EditPlus正则表达式替换字符串详解

网上搜集了些实例 正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率. EditPlus的查找,替换,文件中查找支持以下的正则表达式: Expression Description\t Tab character.\n New line.. Matches any character.| Either expression on its left and right side matc

正则表达式替换和不包含指定字符串

需求 展示一段文字,段落中有些特殊标记的人名.刊名等,格式大体是:“(作者<刊名>其他)”,某个字段可以为空,比如作者为空. 那么对应的正则大体是这样的   '\((.*?)<(.*?)>.*?\)' 最终的效果是 “(<a>作者</a><<a>刊名</a>>其他)” 第一版 1 class Program 2 { 3 static string str = @"<p>[例]当夫广州之首难,武汉兴师,

关键字替换排除HTML标签属性字符

解决办法: 1.打开文件e/class/functions.php 2.找到函数 ReplaceKey($newstext,$classid=0) 3.找到替换代码 if(STR_IREPLACE) { $newstext=empty($public_r[repkeynum])?str_ireplace($r[keyname],'<a href='.$r[keyurl].' target=_blank class=infotextkey>'.$r[keyname].'</a>',$

Atitit.struts排除url&#160;的设计and&#160;原理&#160;自定义filter&#160;排除特定url

Atitit.struts排除url 的设计and 原理 自定义filter 排除特定url 1.1. 原理流程1 2. Invoke1 3. StrutsX2 1.1. 原理流程 读取struts配置xml文件内容 得到多个regexpress规则,匹配规则与uri <constant name="struts.action.excludePattern" value="/com.attilax/core/approot_js.jsp,.*\.jsp,/api.jsp

java replaceall 使用正则表达式替换单等号,不替换其他相关的等号。

写项目需要将公式配置到数据库中,取出后根据公式规则进行比较,由于公式的等于是用单等号,在java中无法直接使用,故需要将单等号替换成双等号,单又不能影响大于等于以及其他形式.故果断选择正则表达式替换.以此留痕,备用. @org.junit.Test public void test4() { String expression="a = 0"; String aa=""; aa=expression.replaceAll("([^=><])=(

vi中的正则表达式替换

今天接到了个任务,要将字符串Test("\r\nABC")替换为Test("ABC\n"),其中使用到了分组替换的方法,使用vi执行如下命令进行替换: %s/"\(\\r\\n\)\([^\\]*\)"/"\2\\n"/g %s - vi的替换命令 尾部的/g意味全局替换 "\(\\r\\n\)\([^\\]*\)" 部分 其中 \(\)的方式为匹配后为设定分组编号,系统会自动进行编号,后面通过\1 \2这