2010-07-14 52 views
2

我正在抓取一個文本塊,在這個塊內會有一行包含一個以「WITH PASSWORD kEqHqPUd」結尾的短語,其中kEqHqPUd是一個動態生成的密碼。任何人都可以提供一個簡單的正則表達式來抓取這個密碼。 FWIW我正在使用PHP。正則表達式結束行短語

感謝

+4

你試圖想出你自己的? – 2010-07-14 14:14:57

回答

9
preg_match('/WITH PASSWORD (.*)$/im', $block, $matches); 
//result in $matches[1] 

的關鍵是"m" modifier

3

不知道你是如何定義「短語結束」 ......但是,如果你的意思是「句子與密碼結束,但之後可能還有一句」,那麼解決方案是:

$text = <<<TEXT 
This is some 
text and there is a sentence that ends 
with WITH PASSWORD kEqHqPUd. Is that 
matched ? 
TEXT; 

$matches = array(); 
if (preg_match('/WITH PASSWORD ([\w\d]+)/', $text, $matches)) { 
    var_dump($matches[1]); 
} 

但是,如果密碼只包含字母和/或數字,但只有在「」短語結束後有某些內容時才能起作用。


如果你的意思是,密碼是整個字符串中的最後一件事,你可以使用這樣的事情:

$text = <<<TEXT 
This is some 
text and there is a sentence that ends 
with WITH PASSWORD kEqHqPUd 
TEXT; 

$matches = array(); 
if (preg_match('/WITH PASSWORD (.+)$/m', $text, $matches)) { 
    var_dump($matches[1]); 
} 

注意,$號表示「端線的」。

+0

我承認模糊不會出現在我身上,但我認爲大寫字母暗示它實際上沒有用適當的句子流動英文文本。 – Artefacto 2010-07-14 14:23:00

0

假設PHP接受標準的正則表達式模式,以下內容應該在「WITH PASSWORD(。+)+ $」的位置,密碼將放置在第一個捕獲組中。