Php preg_match_的正则表达式均不工作
这是我的字符串(Php preg_match_的正则表达式均不工作,php,regex,preg-match-all,Php,Regex,Preg Match All,这是我的字符串($string): 我在PHP文件中使用以下模式,并希望匹配http://abc.com/bb.jpg: preg_match_all('/(?<=zoom:\[\s{15}\').*(?=\')/', $string, $image); preg\u match\u all('/(?为了简化,我们不会使用look around,虽然我说我们需要s修饰符,但我错了,它只用于将新行与点匹配,我们在这里不使用,因此\s匹配新行: $string = <<<J
$string
):
我在PHP文件中使用以下模式,并希望匹配http://abc.com/bb.jpg
:
preg_match_all('/(?<=zoom:\[\s{15}\').*(?=\')/', $string, $image);
preg\u match\u all('/(?为了简化,我们不会使用look around,虽然我说我们需要s
修饰符,但我错了,它只用于将新行与点匹配
,我们在这里不使用,因此\s
匹配新行:
$string = <<<JSO
swatch: 'http://abc.com/aa.jpg',
zoom:[
'http://abc.com/bb.jpg'
],
large:[
'http://abc.com/cc.jpg'
],
JSO;
preg_match_all('/zoom:\[\s*\'(?<img>[^\']*)\'\s*\]/', $string, $m);
print_r($m['img']);
说明:
Array
(
[0] => http://abc.com/bb.jpg
)
/ # Starting delimiter
zoom:\[ # Matches zoom:[
\s* # Matches spaces, newlines, tabs 0 or more times
\' # Matches '
(?<img>[^\']*) # named group, matches everything until ' found
\' # Matches '
\s* # Matches spaces, newlines, tabs 0 or more times
\] # Matches ]
/ # Ending delimiter
/#起始分隔符
缩放:\[\匹配缩放:[
\s*#匹配空格、换行符、制表符0次或更多次
\"火柴"
(?[^\']*)#命名组,匹配所有内容,直到找到
\"火柴"
\s*#匹配空格、换行符、制表符0次或更多次
\]#匹配项]
/#结束分隔符
有趣的是,您实际计算了空格数?使用\s*
并添加s
修饰符以匹配新行:)如果这是JSON,也可以使用JSON\u decode()
取而代之。啊,我的错,你不能在PHP中的lookaround中使用量词……据我所知,你不能在任何lookaround引擎中使用量词。我同意使用json\u decode()
而不是regex。谢谢。结尾的“s”是什么意思?@user1610115你的意思是\s*
?这将匹配空格、换行符、制表符0次或更多次。否则有s
修饰符,用于匹配带点的换行符
。
/ # Starting delimiter
zoom:\[ # Matches zoom:[
\s* # Matches spaces, newlines, tabs 0 or more times
\' # Matches '
(?<img>[^\']*) # named group, matches everything until ' found
\' # Matches '
\s* # Matches spaces, newlines, tabs 0 or more times
\] # Matches ]
/ # Ending delimiter