正则表达式:将字符串从Word匹配到Word

时间:2011-10-23 11:26:42

标签: regex

我想从一段文字中提取一个字符串。该字符串必须以某个字符串开头。

示例:

Word 1 =“你好”
Word 2 =“世界”

文本:

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

我要提取的文字是:

Hello, this is a sentence.
The whole World

我应该使用什么样的常规异常来提取字符串。

注意:字符串'World'出现两次。

由于

2 个答案:

答案 0 :(得分:2)

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

“。”也匹配换行!请注意单词boundary \ b ,您不希望匹配任何不完全是Hello或World的内容,就好像这些单词是其他单词的一部分一样。

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

注意修改后的s指示

  

即可。

也匹配换行符。

答案 1 :(得分:0)

最简单的选择是使用lazy quantifier*?)。从第一个Hello到第一个World匹配。 (记住/s标志,对于dot-all)

Hello.*?World

如果您不希望捕获文本包含Hello,则可能会出现问题。一个更偷偷摸摸的选择是:

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

或者

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