抱歉,但坚持这一个......
我的一行包含左侧的键和右侧的值,中间有一些空格。
例如(我必须使用' _'来表示''当Stackoverflow修剪多个空格时):
产品名称_________________________超级4HP割草机
产品制造商_______________________________本田
键或值可以匹配任何字母,数字和字符集,例如",',等等。
如何创建正则表达式以单独提取键和值?
答案 0 :(得分:2)
\s{2,}
匹配两个或多个空格。
^(.*?)\s{2,}(.*)$
因此,第一个(.*?)
会捕获任意数量的字符,直到达到双倍空格。 \s{2,}
贪婪地匹配两个或更多中间空格。然后,下一个捕获组(.*)
捕获值部分。只需从组索引1中获取关键部分,从组索引2中获取值部分。
在php中,你可以这样做
$txt = <<<EOT
PRODUCT NAME Super 4HP Mower
PRODUCT MANUFACTURER Honda
EOT;
preg_match_all('~^(.*?)\s{2,}(.*)$~m', $txt, $match);
print_r($match[1]);
print_r($match[2]);
<强>输出:强>
Array
(
[0] => PRODUCT NAME Super
[1] => PRODUCT MANUFACTURER
)
Array
(
[0] => 4HP Mower
[1] => Honda
)