我在正则表达方面表现不佳,但今天我遇到了一个不可避免的情况,所以我需要一个符合下面情况的正则表达式:
|hhas.jpg||sd22-9393das.png||8jjas.png||IMG00338-20110109.jpg|
我试过这个正则表达式:/(?<=\|)(\w|\d+\.\w+)(?=\|)/i
但没有得到理想的结果......
我希望在两个preg_match
符号之间使用PHP的|
函数来匹配所有字符串,例如hhas.jpg,sd22-9393das.png等...
答案 0 :(得分:2)
使用此..
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
)
答案 1 :(得分:2)
您可以使用以下正则表达式:
/\|([^|]*)\|/gi
匹配字符串:
1. hhas.jpg
2. sd22-9393das.png
3. 8jjas.png
4. IMG00338-20110109.jpg
答案 2 :(得分:1)
你的表达:
/(?<=\|)(\w|\d+\.\w+)(?=\|)/i
写得很好,但只是有一些小缺陷
当您说\w
只有一个字符时。
OR
条件
\d+\.\w+
仅在符合相同订单时才会匹配。即数字列表首先跟随.
,然后是字母或数字或下划线。
更好地将正则表达式更改为:
/(?<=\|)(.*?)(?=\|)/ig
这将为您提供介于|
s
/\|(.*?)\|/ig
答案 3 :(得分:1)
不使用正则表达式尝试。
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 )