正则表达式:从单词匹配到单词的字符串

6

我希望从一段文本中提取字符串。这个字符串必须以特定的字符串开头和结尾。

示例:

词语1 = "Hello"
词语2 = "World"

文本:

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

The piece of text i want to extract is:

Hello, this is a sentence.
The whole World

我应该使用什么样的正则表达式来提取字符串。

注意:字符串“World”出现了两次。

谢谢

2个回答

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

注意:"."也与换行符匹配!请注意单词边界\b,您不希望匹配不是完全等于Hello或World的任何内容,就像这些单词是其他单词的一部分一样。

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

请注意修改的s,它指示 "." 匹配换行符。

0

最简单的选择是使用惰性量词*?)。这将匹配从第一个Hello到第一个World。(记得使用/s标志,以匹配所有字符)

Hello.*?World

如果您不希望捕获的文本包含Hello,那么这可能会成为一个问题。那么更加隐秘的选项是:

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

或者

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

2
这也将匹配任何包含Hello的更大语境的内容。同样适用于World。 - FailedDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接