本文目录一览:
- 1、求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径
- 2、求教php或者正则表达式的高手, preg_replace("/([^()]*/)", "", $address); 这个正则表达式语法错在哪里
- 3、PHP正则表达式高手来啊
- 4、求高手帮忙php或正则表达式
求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径
正则表达式:(?=img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\")
分别取第0和第2捕获组的数据,就是你要的获取/abc/efg/qwe/1.gif和获取1.gif的数据
替换你可以用上面的正则表达式:(?=img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\")
替换成:style/images/$2
我给你一个用Java实现的上述正则表达式的例子.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CC {
public static void main(String[] args) {
String s="img src=\"/abc/efg/qwe/1.gif\"";
String regex="(?=img src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\")";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group());
System.out.println(m.group(2));
}
System.out.println(s.replaceAll("(?=img src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\")", "style/images/$2"));
}
}
运行结果:
/abc/efg/qwe/1.gif
1.gif
img src="style/images/1.gif"
求教php或者正则表达式的高手, preg_replace("/([^()]*/)", "", $address); 这个正则表达式语法错在哪里
有两个地方错的,不知道你要这个表达式做什么,帮你改了三份,你看下。
preg_replace("/\([^()]*/", "", $address);
preg_replace("/\([^()]*\)/", "", $address);
preg_replace("/([^()]*)/", "", $address);
表达式字符串需要使用 / 来表明界限,你的表达式在右界线符右边有一个右圆括号。
表达式内部的圆括号是用来为表达式分组的,而你的表达式内只有一个左括号,无法配对。
PHP正则表达式高手来啊
你好,我虽然没学过PHP,但是为了帮助你(还有你的100分)也稍微看了一下,这里说一下我的见解..不对的还请见谅
首先我不建议楼主先获取字符串数组再用循环一一替换,看了一下preg_replace这个方法,我自己仿写了一个
?php
$string = "[a href=?c=12a=l=2p=22/a] [a href=?c=12a=l=2p=33/a] [a href=?c=12a=l=2p=44/a] [a href=?c=12a=l=2p=55/a] [a href=?c=12a=l=2p=66/a] [a href=?c=12a=l=2p=77/a] [a href=?c=12a=l=2p=88/a] [a href=?c=12a=l=2p=99/a] [a href=?c=12a=l=2p=1010/a] [a href=?c=12a=l=2p=2下一页/a]";
$pattern = "/(\?c=)(\d+)(a=l=2p=)(\d+)/g";
$replacement = "/list/\\2-\\4.html";
print preg_replace($pattern, $replacement, $string);
?
上面的代码是替换,先取得字符串,再替换,再拆分,这样可以少一步循环
下面是拆分的正则表达式,根据[]作判断,看了楼主写的好象有点不太明白取什么,我这里是取的每一个[],正则表达式为
/\[[^\]]*\]+?/g
说明一下每个符号的作用
\[ :转义为符号"[" , \]意思相同
取[]中间的那些非"]"的内容, 最后的\]+?是非贪婪匹配,意思是取到一个符合的就停止,这样不会把整个字符串都取了,如果楼主不想要两端的[], 可以改成这样
/(?=\[)[^\]]*(?=\])+?/g
不消费两端的[]号
以上代码我没在PHP里运行,只在别的语言上试了下可以,见笑了~~
PS:第一段代码中$pattern正则中的号必须要写成" amp ;"(无空格) 百度里不让打出来,切记!
求高手帮忙php或正则表达式
我测试了下,这个正式表达式,在微软的环境中可以通过!
^.*\\(.*)\\$