首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一正则表达式 [已结贴,结贴人:hanpoyangtitan]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 10:52:57 楼主
    求一正则表达式替换
    <a href="http://www.baidu.com.com" >baidu </a>
    如上字符串中标签外的baidu 为 <b>baidu </b>
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:04:221楼 得分:0
    HTML code
    <script type="text/javascript"> var a='<a href="http://www.baidu.com.com" > baidu </a><a href="http://www.baidu.com.com" > 12312 </a>' alert(a.replace(/(<a[^>]*?>)(.*?)(<\/a>)/g,"$1<b>$2</b>$3")) </script>

    参考下 ,php的不会
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:26:322楼 得分:0
    如果是baid,baidu,baidu,google,baidu <a href="http://www.baidu.com">baidu </a>
    除了www.baidu.com外的baidu都替换为 <b>baidu </b>该怎么写?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:33:133楼 得分:0
    方法同二楼,建议你查阅一下正则表达式规则。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:37:044楼 得分:10
    PHP code
    $s = 'baid,baidu,baidu,google,baidu <a href="http://www.baidu.com"> baidu </a> sdfsdf www.baidu.com '; echo preg_replace("/(?<!www\.)(baidu)(?!\.com)/","<b>\\1</b>",$s);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:38:245楼 得分:0
    HTML code
    <script type="text/javascript"> var a='baid,baidu,baidu,google,baidu <a href="http://www.baidu.com"> baidu </a> ' alert(a.replace(/(?!www\.)baidu(?!\.com)/g,"<b>baidu</b>")) </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzty
    • 等级:
    发表于:2007-12-29 11:41:226楼 得分:10
    $search  = array("/(.*)([^\.]baidu[^\.])(.*)/", "/(.*)([^\.]baid[^\.])(.*)/", "/(.*)([^\.]google[^\.])(.*)/");
    $replace = "\$1 <b> baidu </b>$3";
    $str = ' <a  href="http://www.baidu.com.com"  > baidu baid </a> <a  href="http://www.baidu.com.com"  > 12312 google </a>';
    $res = preg_replace( $search, $replace, $str );
    exit($res);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:44:357楼 得分:0
    我的意思是除了标签内容以外的关键字替换。上面少说了一句,明天+100分,麻烦各位再帮下
    如:
    baidu,baidu,baidu,google,baidu <a  href="http://www.baidu.com"> baidu </a>
    baidu,baidu <a href="http://baidu.com">baidu </a>baidubaidu <a href="cache.baidu.cn">摆渡 </a>
    .....
    替换为
    <b>baidu </b>, <b>baidu </b>, <b>baidu </b>, <b>baidu </b>, <b>baidu </b> <a  href="http://www.baidu.com"> <b>baidu </b> </a>
    <b>baidu </b>, <b>baidu </b> <a href="http://baidu.com"> <b>baidu </b> </a> <b>baidu </b> <b>baidu </b> <a href="cache.baidu.cn">摆渡 </a>
    ... 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:45:548楼 得分:0
    还有 <a href="http://www.baidu.com">www.baidu.com </a>替换为 <a href="http://www.baidu.com">www. <b>baidu </b>.com </a>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:53:079楼 得分:0
    BatchFile code
    这需求太乱了。一会说除了www.baidu.com 里的baidu保留之外,其他的baidu 去不替换为<b>baidu</b>. 一会又<a href="http://www.baidu.com"> www.baidu.com </a> 替换为 <a href="http://www.baidu.com">www.<b>baidu</b>.com </a> <b>

    到底是什么意思呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 11:54:3410楼 得分:0
    去不 => 全部
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 12:09:2411楼 得分:0
    就是一篇文章,不影响链接,图片等功能,要求替换也面显示文字的关键字,需求明确码?其实我在发帖时说的很清楚了,除标签以外的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 12:30:1612楼 得分:100
    HTML code
    <script type="text/javascript"> var a='baidu,baidu,baidu,google,baidu <a href="http://www.baidu.com"> baidu </a>baidu,baidu <a href="http://baidu.com"> baidu </a> baidubaidu <a href="cache.baidu.cn"> www.baidu.com </a>' alert(a.replace(/baidu/g,"<b>baidu</b>").replace(/(<(a|img).*?)<b>baidu<\/b>(.*?>)/g,'$1baidu$3')) </script>


    使用的时候(a ¦img)这个地方可能要扩展
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hahawen
    • 等级:
    发表于:2007-12-29 12:39:3213楼 得分:0
    晕哦,csdn怎么了?两个星星的竟然问这种问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • muxrwc
    • 等级:
    发表于:2007-12-29 12:55:1714楼 得分:0
    to mingxuan3000

    我这里用csdn的那个消息总出错,什么信息都看不了...

    JS的方案...

    JScript code
    <script type="text/ecmascript"> var key = "baidu", nkey = "<b>baidu<\/b>"; var pattern = new RegExp("(<a(?:\"[^\"]*\"|'[^']*'|[^\"'>]+)*>)([\\S\\s]+?)<\\/a>|" + key, "ig"); var str = 'baidu,baidu,baidu,google,baidu <a href="http://www.baidu.com"> baidu,baidu </a>baidu,baidu <a href="http://baidu.com"> baidu </a> baidubaidu <a href="cache.baidu.cn"> www.baidu.com </a>' alert(str.replace(pattern, function (a, b, c) { if (b && c) { return b + c.replace(new RegExp(key, "ig"), nkey); } else { return nkey; } })); </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 12:57:5215楼 得分:0
    那个东西是很烂的,速度也慢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • muxrwc
    • 等级:
    发表于:2007-12-29 12:59:0716楼 得分:0
    我这里打开那个弹错,然后就是乱乱的...
    还好看到个地址...
    @.@
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • muxrwc
    • 等级:
    发表于:2007-12-29 13:01:4117楼 得分:80
    貌似PHP里有反向预查,那样的话,很简单的就可以解决了...:D
    飘走...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 14:50:5518楼 得分:0
    还讨论什么劲?mingxuan的是对的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 14:55:1519楼 得分:0
    经测试,mingxuan3000 是对的。

    HTML code
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=GBK"> <META name="GENERATOR" content="IBM WebSphere Studio"> <META http-equiv="Content-Style-Type" content="text/css"> <LINK href="theme/Master.css" rel="stylesheet" type="text/css"> <TITLE>告示版</TITLE> </HEAD> <BODY> 字符串: <p><textarea id="tt" cols="80" rows="5"></textarea> </p> 替换后字符串: <p><textarea id="tt1" cols="80" rows="5"></textarea> </p> 效果预览: <p> <div id="tt2"></div> </p> </BODY> <script language="javascript"> //var key = "baidu", nkey = "<b>baidu<\/b>"; //var pattern = new RegExp("(<a(?:\"[^\"]*\"|'[^']*'|[^\"'>]+)*>)([\\S\\s]+?)<\\/a>|" + key, "ig"); var str = 'baidu,baidu,baidu,google,baidu <a href="http://www.baidu.com"> baidu,baidu </a>baidu,baidu <a href="http://baidu.com"> baidu </a> baidubaidu <a href="cache.baidu.cn"> www.baidu.com </a>' var tt=str.replace(/baidu/g, "<b>baidu<\/b>").replace(/(<a.*?)(<b>baidu<\/b>)(.*?>)/g,"$1baidu$3") document.getElementById("tt").value=str document.getElementById("tt1").value=tt document.getElementById("tt2").innerHTML=tt </script> </HTML>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 15:14:3420楼 得分:0
    好,明天我+分后给分。至此结帖,明天结算。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 15:22:3621楼 得分:0
    UP!~~~不让沉!~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-29 20:10:4222楼 得分:0
    for($i=0;$i <count($keyws);$i++){
            $content=eregi_replace("($keyws[$i])"," <span class=\"keyword\">\\1 </span>",$content);
    while(preg_match("/( <[^>]*?) <span class=\"keyword\">($keyws[$i]) <\/span>([^>]*?>)/i",$content))
    {
        $content=preg_replace("/( <[^>]*?) <span class=\"keyword\">($keyws[$i]) <\/span>([^>]*?>)/i","\$1\$2\$3",$content);
    }
    }
    这是我的解决方案,再次感谢各位的支持。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 10:59:2923楼 得分:0
    楼主,我是来JF的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 14:23:3724楼 得分:0
    该回复于2008-01-02 14:48:58被管理员删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 16:10:0725楼 得分:0


    怎么还没有结呀?你应该没有什么问题了吧?

    我只能来接分了...


    咯咯...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 16:32:3526楼 得分:0
    不清楚啊 。


    正则表达式  难 啊  乱啊。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 21:06:4627楼 得分:0
    该回复于2008-01-04 08:58:59被管理员删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 21:50:1628楼 得分:0
    晕 这么简单的问题居然没一个像样的回答 这里正则表达式写得最好的应该是muxrwc了
    LZ给分不公啊
    PHP可以使用perl的正则表达式引擎 应该有递归查询的

    另外这样的替换没必要一定是一条表达式完成.多几次替换能轻松完成所需

    var str = str.replace(/ <[^>]*?baidu[^>]*>/ig,"[key word backup]").replace(/baidu/ig," <b>baidu </b>").replace(/\[key word backup\]/ig,"baidu");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-02 21:51:5029楼 得分:0
    JScript code
    var str = str.replace(/<[^>]*?baidu[^>]*>/ig,"[key word backup]").replace(/baidu/ig,"<b>baidu</b>").replace(/\[key word backup\]/ig,"baidu