簡體   English   中英

與以下模式匹配的正則表達式

[英]regular expression that matches the below pattern

我的正則表達式不好,但是今天我遇到了不可避免的情況,因此我需要一個匹配以下情況的正則表達式:

|hhas.jpg||sd22-9393das.png||8jjas.png||IMG00338-20110109.jpg|

我嘗試了此正則表達式:/(?<= /(?<=\\|)(\\w|\\d+\\.\\w+)(?=\\|)/i但未獲得所需的結果...

我想通過在兩個|之間使用PHP的preg_match函數來匹配所有字符串| 標志,例如hhas.jpg,sd22-9393das.png等...

用這個..

preg_match_all('/\|(.*?)\||/', $str, $matches);
print_r(array_filter($matches[1]));

OUTPUT :

Array
(
    [0] => hhas.jpg
    [1] => sd22-9393das.png
    [2] => 8jjas.png
    [3] => IMG00338-20110109.jpg
)

示范

enter image description here

您可以使用以下正則表達式:

/\\|([^|]*)\\|/gi

演示

匹配的字符串:

1. hhas.jpg
2. sd22-9393das.png
3. 8jjas.png
4. IMG00338-20110109.jpg

你的表情:

/(?<=\|)(\w|\d+\.\w+)(?=\|)/i

寫得不錯,但有一些小缺陷

  • 當您說\\w ,這只是一個字符。

  • OR條件

  • \\d+\\.\\w+僅在滿足相同順序時匹配。 即數字列表的前面跟隨一個. 然后是字母或數字或下划線。

最好將您的正則表達式更改為:

/(?<=\|)(.*?)(?=\|)/ig

這會給你介於兩者之間的任何東西| 小號

同樣是恕我直言,使用環視解決此類問題實在是太過分了。 更好地使用:

/\|(.*?)\|/ig

嘗試不使用正則表達式。

explode('||', rtrim(ltrim ('|hhas.jpg||sd22-9393das.png||8jjas.png||IMG00338-20110109.jpg|','|'),'|'));

輸出:

Array ( [0] => hhas.jpg [1] => sd22-9393das.png [2] => 8jjas.png [3] => IMG00338-20110109.jpg ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM