我想从一段文字中提取一个字符串。该字符串必须以某个字符串开头。
示例:
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'出现两次。
由于
答案 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