我需要使用preg_match或preg_split输出下面数组中的单个3,我该如何实现?这种可能性是1到8。
VMName Count CompatibilityForMigrationEnabled CompatibilityForOlderOperatingSystemsEnabled ------ ----- -------------------------------- -------------------------------------------- ap-1-38 3 False False
我使用preg_match和preg_split都尝试了以下内容但没有成功:
('\\s+\\d\\s+', $output)
('\\s+[\\d]\\s+', $output)
("^[\s0-9\s]+$", $output)
("/(.*), (.*)/", $output)
答案 0 :(得分:1)
尝试下面的preg_match
<?php
$matched = preg_match('/( [0-9] )/', $string, $matches);
if($matched){
print_r($matches);
}
希望这有帮助!
答案 1 :(得分:1)
答案 2 :(得分:0)
要匹配空格之间的1
到8
号码,您可以使用
preg_match('~(?<!\S)[1-8](?!\S)~', $s, $match)
请参阅regex demo。
<强>详情
(?<!\S)
- 当前位置左侧立即需要的空格或字符串开头[1-8]
- 从1
到8
(?!\S)
- 紧靠当前位置右侧需要的空格或字符串结尾请参阅PHP demo:
$str = 'VMName Count CompatibilityForMigrationEnabled CompatibilityForOlderOperatingSystemsEnabled ------ ----- -------------------------------- -------------------------------------------- ap-1-38 3 False False';
if (preg_match('/(?<!\S)[1-8](?!\S)/', $str, $match)) {
echo $match[0];
}
// => 3
注意您也可以使用捕获方法:
if (preg_match('/(?:^|\s)([1-8])(?:$|\s)/', $str, $match)) {
echo $match[1];
}
请参阅regex demo和PHP demo。
此处,(?:^|\s)
是一个非捕获交替组,匹配字符串*(^
)或(|
)空格(\s
)的开头,然后是数字从1
到8
被捕获(使用([1-8])
),然后(?:$|\s)
匹配字符串结尾($
)或空格。 $match[1]
保留必要的输出。