2012-06-29 28 views
2

比方說,我想從在格式REGEX如何重複提取模式?

Section 26, 753, 87, 201, 47

我知道,這某種格式的存在我的文檔中列出的電子郵件中提取部分的清單,但我不知道在哪裏。我怎樣才能編寫一個能夠提取所有分節號的正則表達式? (對不起,我會發布我以後已有的模式。)目前,它查找段落短語,後跟一個空格,後跟一個數字。其餘部分如何提取?也許0或更多重複的逗號,空格,數字?格式化到底是怎樣的?

回答

2

使用PHP/PCRE直接從正則表達式返回可變數量的捕獲是不可能的(雖然有支持這個的實現,特別是.NETPerl 6)。

使用PHP,您必須編寫代碼。有多種選項 - 從循環中的字符串中刪除匹配,提取列表,然後使用preg_match_all獲取數字,等等 - 但我想我只是將整個列表提取到它自己的字符串中並使用split(好了,preg_split),以獲得個人部分號碼:

$str = 'Section 26, 753, 87, 201, 47'; 
if (preg_match('/Section\s+(\d+(?:,\s*\d+)*)/', $str, $match)) { 
    $sections = preg_split('/,\s*/', $match[1]); 
} 

print_r($sections); 

這給期望的結果:

Array (
    [0] => 26 
    [1] => 753 
    [2] => 87 
    [3] => 201 
    [4] => 47 
) 
+0

嗯,PHP是可能不是,我想用這個項目,然後語言。在我提出一種從我的半結構化文檔中提取數據的不同方法之前,我發佈了這個問題,並且從一個非常大的文檔的大部分中檢索可變數量的捕獲正是我所需要的。你知道Python是否支持這個功能?你知道任何可能列出可用語言的參考嗎? –