php正则表达式-仅匹配1次出现的don';I don’我不能超过一个人
我正在尝试编写正则表达式来捕捉这句话:php正则表达式-仅匹配1次出现的don';I don’我不能超过一个人,php,regex,Php,Regex,我正在尝试编写正则表达式来捕捉这句话: background:url(“../images/btn send.png”)无重复滚动-70px中心rgba(0,0,0,0) 但不是这个: background:url(“../images/btn send.png”)无重复滚动-70px 10px rgba(0,0,0,0) 所以我应该只在…px…上获得匹配,而不是 …px px… 我已尝试使用下一个正则表达式: background\s*:[^;]*?(((-*\d+px|0)\s+{1}[a-
background:url(“../images/btn send.png”)无重复滚动-70px中心rgba(0,0,0,0)代码>
但不是这个:
background:url(“../images/btn send.png”)无重复滚动-70px 10px rgba(0,0,0,0)代码>
所以我应该只在…px…
上获得匹配,而不是
…px px…
我已尝试使用下一个正则表达式:
background\s*:[^;]*?(((-*\d+px|0)\s+{1}[a-z]
我在PHPpreg\u match
我试着只找到一个px,但它不工作,而且它匹配两个字符串,你能帮我吗?
谢谢! 在得到一个更优雅的答案之前(我不完全相信这个答案),这将有效:
<?php
$str1 = 'background: url("../images/btn-send.png") no-repeat scroll -70px center rgba(0, 0, 0, 0);';
$str2 = 'background: url("../images/btn-send.png") no-repeat scroll -70px 10px rgba(0, 0, 0, 0);';
var_dump(preg_match('/background\s*:[^;]*?((?<!\dpx|0|\s)\s+(-*\d+px|0)\s+)[a-z]/i',$str1));
var_dump(preg_match('/background\s*:[^;]*?((?<!\dpx|0|\s)\s+(-*\d+px|0)\s+)[a-z]/i',$str2));
我想你的意思是b{1}a{1}c{1}k{1}g{1}r{1}o{1}u{1}n{1}d{1}
<代码>
不是我正在尝试只捕获具有背景:px(出现一次!)的字符串代码>但不背景:px(出现两次)
您可以使用类似于'/background\s*:[^;]*?(?)的内容,但这需要规范化空格(只有一个空格可以分隔它们,而不是制表符、其他空格或多个空格。您可以规范化那里的字符串吗(换句话说,您可以preg_replace('/\s+/','',$string)
事先,还是这会破坏重要的空白?我相信这个问题的答案就是你要找的。@user2979757:噢,@tripleee试图说{1}
是无用的,您可以忽略这一点,如果它可以匹配更多次,它不会使它“无效”,它只是说如果可能的话匹配它一次。谢谢,我现在对它做了一些更改((?也可以,\s\s+
原来是以前尝试/迭代的遗留物)。