您的位置:

求教php或者正则表达式的高手,正则表达式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或正则表达式

我测试了下,这个正式表达式,在微软的环境中可以通过!

^.*\\(.*)\\$