社区
基础编程
帖子详情
谁帮我写一个正则。匹配源码中的字符串的。
Gdj
2006-08-02 03:26:13
//test.php
<?
$str1="abcd";
$str2="ab\"cd";
$str3="ab\'cd";
$str4="\\\r\n\\\\\\\\";
$str5="\$";
?>
$buf=file_get_contents("test.php");
希望从$buf中匹配出所有字符串。要考虑到字符串中的各种转义符。
...全文
163
10
打赏
收藏
谁帮我写一个正则。匹配源码中的字符串的。
//test.php $buf=file_get_contents("test.php"); 希望从$buf中匹配出所有字符串。要考虑到字符串中的各种转义符。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Gdj
2006-08-03
打赏
举报
回复
我已经把这个正则写出来了。
zero你写的太简单啦^^b。我要的是通用。当
if($i=5) echo "aafwf$i=5aoooo";
你的就不行了,还是把字符串里的给替换了吧。我要的是内容无限制,只要在字符串里的就不能替换。
zeroleonhart
2006-08-02
打赏
举报
回复
preg_replace('/(?<!\')\$i\=5(?!\')/isU','\$j=8',$str);
zeroleonhart
2006-08-02
打赏
举报
回复
preg_replace('/(?<!:\')\$i\=5(?!\')/isU','\$j=8',$str);
颓废的老猫
2006-08-02
打赏
举报
回复
这么长的正则,恐怖!
Gdj
2006-08-02
打赏
举报
回复
我看了一下,smarty的这条正则有十几k。谁要是看得懂10k长的正则的话……
Gdj
2006-08-02
打赏
举报
回复
smarty编译时用的就是正则,不过实在太长了……
象上面的就是他一条正则的一小半,csdn做了长度限制,一个帖发不完smarty的一个正则……郁闷。
Gdj
2006-08-02
打赏
举报
回复
|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?(?:\->(?:\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?))+)(?:\((?:(?:\w+|(?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\->(?:\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?)(?:\((?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\s*,\s*(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?)))*)?\))?)*)(?:\s*,\s*(?:(?:\w+|(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))(?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\->(?:\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?)(?:\((?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\s*,\s*(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?)))*)?\))?)*))))*)(?:\s*,\s*(?:\w+|(?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\->(?:\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?)(?:\((?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\s*,\s*(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?)))*)?\))?)*)(?:\s*,\s*(?:(?:\w+|(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))(?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\->(?:\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?)(?:\((?:(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?))(?:\s*,\s*(?:(?:(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*'))|(?:\-?\d+(?:\.\d+)?)))*)?\))?)*))))*))*)?\))?(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?)|(?:\$(?:\w|[?])+(?:\[\$?[\w\.]+\])*(?:\.\$?(?:\w|[?])+(?:\[\$?[\w\.]+\])*)*(?:(?:[\+\*\/\%]|(?:-(?!>)))(?:(?:\-?\d+(?:\.\d+)?)|[\$\w\.\+\-\*\/\%\d\>\[\]])*)?|\#\w+\#|\%\w+\.\w+\%)|(?:"[^"\\]*(?:\\.[^"\\]*)*"|'[^'\\]*(?:\\.[^'\\]*)*')))*)*))
(?:\s+(.*))?$~xs
Gdj
2006-08-02
打赏
举报
回复
可是如果我要做一个复杂替换的话,逐个字符比较自己写替换算法太痛苦了。
xuzuning
2006-08-02
打赏
举报
回复
不要用正则处理正则不能处理的事情
其实只要写个函数逐个字符判断读取就可以了。并且速度要高于使用正则
Gdj
2006-08-02
打赏
举报
回复
我是为了用正则替换源码中的一些单词,但不能将字符串里的内容也替换了。
举个例子,比如以下,如果要将$i=5替换成$j=8
<?php
if($i=5) echo '$i=5';
?>
替换成
<?php
if($j=8) echo '$i=5';
?>
解析
正则
表达式
源码
识别输入的
正则
表达式
字符串
,解析
字符串
的结构,按照树形结构显示
正则
表达式内容。可以为
正则
表达式
字符串
匹配
做初始化。
Java工程师必学系列课程之5--《
字符串
及
正则
表达式》视频课程
可以毫不夸张的说,任何
一个
Java程序,都离不开对
字符串
保存和处理。很多学员对
字符串
的理解只是处于比较粗浅的阶段。殊不知,如果对
字符串
处理的不好,会影响到软件的运行效率。本课程专门讲解
字符串
相关的知识,将...
java
正则
表达式
匹配
空
字符串
,【java】空
字符串
作为
正则
表达式,
匹配
什么?
空
字符串
作为
正则
表达式,
匹配
什么?ls = makeList(" AB CDEFG HIJKLMNOPQRSTUVWXYZ".split(""));System.out.println(ls);输出:[ , A, B, , C, D, E, F, G, , H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, ...
正则
匹配
以某字符开头,以某字符结尾
最近在整公司的QQ机器人开发,我们开发用到的是酷Q,用到的开发工具则是JCQ,然后因为对于图片或者文件消息等,接收到的
字符串
形如以下: [CQ:image,file=50CB70BF5232E82C5E0D73184FAAE3EB.jpg]广东省方法[CQ:...
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章