2015-02-06 76 views
1

對不起分隔的多個字的,但堅持這一個...正則表達式來提取2組由多個空格

我有一個包含在左側和價值右側的鍵線,擁有多項空間插圖中。

例如(我不得不使用 '_' 代表 '' 作爲修剪#1的多個空格):

產品NAME________________________________Super 4HP割草機

產品MANUFACTURER_______________________________Honda

一鍵或值可以匹配任何一組字母,數字和字符,如「,」等:

如何創建正則表達式來分別提取密鑰和值?

+0

實際上,這是*算法上不可能的*除非你規定「____」必須至少有2個空格,鍵/值只能包含單個單詞之間的空格。這是一個有效的假設嗎? – 2015-02-06 06:30:31

+0

是的,不幸的是,數據文件格式很差。以編程方式可靠地處理它幾乎是不可能的。 – pfeds 2015-02-06 08:05:45

回答

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 
) 
+0

完美,謝謝。 – pfeds 2015-02-06 07:00:54

+0

很高興工作.. – 2015-02-06 07:08:23