我有一个大字符串
------%%CreationDate: 11/9/2006 1:01 PM %%BoundingBox: -1 747 53 842 %%HiResBoundingBox: -0.28---------
现在我想获得此匹配后的值“%% BoundingBox:” 我的意思是我需要得到“-1 747 53 842”,所以我可以将它拆分并处理,请帮助如何使用preg_match或其他任何方法执行此操作。 感谢。
答案 0 :(得分:2)
尝试使用以下正则表达式:
/%%BoundingBox: ([^%]*)/
此正则表达式匹配第一个%
字符之前的所有内容。
/%%BoundingBox: (.*?)%%/
此正则表达式匹配%%
之前的所有内容 - 如果出现单个%
,则会捕获它。
PHP代码:
$input = '------%%CreationDate: 11/9/2006 1:01 PM %%BoundingBox: -1 747 53 842 %%HiResBoundingBox: -0.28---------';
preg_match('/%%BoundingBox: ([^%]*)/', $input, $matches);
$output = $matches[1];
答案 1 :(得分:1)
答案 2 :(得分:0)
似乎匹配集是数字和空格,所以:
/%%BoundingBox: ([\s\d-]+)/
这样做即使没有%%
后面也能正常工作;这是一个示例实现:
preg_match_all('/%%BoundingBox: ([\s\d-]+)/', $string, $matches);
print_r($matches[1]);
输出:
Array
(
[0] => -1 747 53 842
)
您可以通过强制执行4组数字来使其更严格:
preg_match_all('/%%BoundingBox: ((?:\s*\-?\d+){4})/', $string, $matches);
<强>更新强>
要将它们解析为键值对,您可以执行以下操作:
preg_match_all('/%%([^:]++):([^%]*+)/', $string, $matches);
print_r(array_combine($matches[1], array_map('trim', $matches[2])));
输出:
Array
(
[CreationDate] => 11/9/2006 1:01 PM
[BoundingBox] => -1 747 53 842
[HiResBoundingBox] => -0.28---------
)
答案 3 :(得分:0)
$text = '------%%CreationDate: 11/9/2006 1:01 PM %%BoundingBox: -1 747 53 842 %%HiResBoundingBox: -0.28---------';
$pattern = "#(%%BoundingBox: )(.*?)( %%HiResBoundingBox)#i";
preg_match_all($pattern, $text, $matches);
print_r($matches[2]);
输出:
Array
(
[0] => -1 747 53 842
)
答案 4 :(得分:0)
试试这个,
$str='------%%CreationDate: 11/9/2006 1:01 PM %%BoundingBox: -1 747 53 842 %%HiResBoundingBox: -0.28---------';;
preg_match("/\%\%BoundingBox:\s(.*)\s\%\%/",$str,$match);
会给予
Array ( [0] => %%BoundingBox: -1 747 53 842 %% [1] => -1 747 53 842 )
然后你可以通过
找到你的价值echo $match[1];// -1 747 53 842