2011-10-23 32 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