本文目錄一覽:
- 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或正則表達式
我測試了下,這個正式表達式,在微軟的環境中可以通過!
^.*\\(.*)\\$
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/279474.html