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]

我在PHP
preg\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+
原来是以前尝试/迭代的遗留物)。