2011-10-23 76 views
4

我想從一段文本中提取一個字符串。該字符串必須以特定的字符串開始結尾。正則表達式:從字到字匹配字符串

實施例:

字1 = 「你好」
字2 = 「世界」

文本:

Hello, this is a sentence. 
The whole World can read this. 
What World? 

我要提取的文本片段的是:

Hello, this is a sentence. 
The whole World 

我應該用什麼樣的常規例外提取字符串。

注意:字符串'World'出現兩次。

感謝

回答

2
^\bHello\b.*?\bWorld\b 

凡 「」也匹配換行符!注意單詞邊界\ b,你不想匹配任何不完全是Hello或World的東西,就好像那些單詞是其他單詞的一部分一樣。

if ($subject =~ m/^\bHello\b.*?\bWorld\b/s) { 
    $result = $&; 
} 

注意的S改性其指示

也匹配換行符。

0

最簡單的方法是使用一個lazy quantifier*?)。這將匹配從第一個你好到第一個世界。 (記得/s標誌,爲斑點全部)

Hello.*?World 

這可能是一個問題,如果你不希望捕捉文本包含Hello無論是。更狡猾的選項,然後爲:其中Hello是一個更大的範圍內的部分

Hello(?:(?!Hello|World).)*World 

或者

Hello(?:(?!Hello).)*?World 
+1

這也將匹配任何內容。世界同樣適用。 – FailedDev