正则表达式提取由多个空格分隔的2组单词

时间:2015-02-06 06:27:44

标签: regex

抱歉,但坚持这一个......

我的一行包含左侧的键和右侧的值,中间有一些空格。

例如(我必须使用' _'来表示''当Stackoverflow修剪多个空格时):

  

产品名称_________________________超级4HP割草机

     

产品制造商_______________________________本田

键或值可以匹配任何字母,数字和字符集,例如",',等等。

如何创建正则表达式以单独提取键和值?

1 个答案:

答案 0 :(得分:2)

\s{2,}匹配两个或多个空格。

^(.*?)\s{2,}(.*)$

因此,第一个(.*?)会捕获任意数量的字符,直到达到双倍空格。 \s{2,}贪婪地匹配两个或更多中间空格。然后,下一个捕获组(.*)捕获值部分。只需从组索引1中获取关键部分,从组索引2中获取值部分。

DEMO

在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
)