求教php或者正则表达式的高手,正则表达式PHP

发布时间:2023-01-07

本文目录一览:

1、求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径 2、[求教php或者正则表达式的高手, preg_replace("/([^()]/)", "", $address); 这个正则表达式语法错在哪里](#求教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);
?>

上面的代码是替换,先取得字符串,再替换,再拆分,这样可以少一步循环 下面是拆分的正则表达式,根据[]作判断,看了楼主写的好象有点不太明白取什么,我这里是取的每一个[],正则表达式为

$\[[^\]]*\]+?$

说明一下每个符号的作用 $$ :转义为符号"[", $$意思相同 取[]中间的那些非"]"的内容, 最后的]+?是非贪婪匹配,意思是取到一个符合的就停止,这样不会把整个字符串都取了,如果楼主不想要两端的[], 可以改成这样

(?=$$)[^\]]*(?=$$])+?

不消费两端的[]号 以上代码我没在PHP里运行,只在别的语言上试了下可以,见笑了~~ PS:第一段代码中$pattern正则中的$号必须要写成&amp;(无空格) 百度里不让打出来,切记!

求高手帮忙php或正则表达式

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

^.*$.*$$