我有一个如下所示的数组:
[cspacer231]
[*spacer231]
[*spacer10]-
[*spacer2]
[*spacer3210]-
[cspacer2221]
现在,我想在最后没有 - 所有[*spacerNUMBER]
。
我的尝试是"/\[\*spacer(.*?)](?!-)/"
,但它只需要第一个孩子。
任何帮助将不胜感激。
答案 0 :(得分:0)
尝试以下方法:
"/\[\*spacer(.*?)\]$/"
$
符号要求]
之后没有任何内容。
如果您想在spacer
之后限制数字:
"/\[\*spacer([0-9]*?)\]$/"
答案 1 :(得分:0)
尝试:
/\[.*spacer(.*?)](?!-)/g
答案 2 :(得分:0)
你的正则表达式应该是
\[\*spacer(\d+)\](?!-)
演示:https://regex101.com/r/wD5fM9/1
在PHP中使用:
$array = array('[cspacer231]',
'[*spacer231]',
'[*spacer10]-',
'[*spacer2]',
'[*spacer3210]-',
'[cspacer2221]');
foreach($array as $thing) {
if(preg_match('~\[\*spacer(\d+)\](?!-)~', $thing, $match)) {
echo $match[1] . "\n";
}
}
输出:
231
2
您应该使用\d+
,因此您确定它是一个数字,而不仅仅是任何内容。