gpt4 book ai didi

javascript - 用于在 JavaScript 中捕获 Heredoc 的正则表达式

转载 作者:行者123 更新时间:2023-12-02 14:09:01 25 4
gpt4 key购买 nike

我有一个 perl 脚本,如下所示:

#/usr/bin/perl -w

print 'My output: ';

print <<END;
Here is more content
which is printed with
heredoc style
END

print 'End of output';

现在我想用 JavaScript 提取上面的heredoc打印的内容。结果应如下所示:

<<END;
Here is more content
which is printed with
heredoc style
END

我已经尝试过 <<END(.|\n)*END 。如果文档仅包含一个heredoc,则此方法有效,但如果包含多个heredoc,则无效。

例如,如果我的 Perl 脚本如下所示:

#/usr/bin/perl -w

print 'My output: ';

print <<END;
Here is more content
which is printed with
heredoc style
END

print <<END;
Here is even more content
which is printed with
heredoc style
END

print 'End of output';

正则表达式匹配:

<<END;
Here is more content
which is printed with
heredoc style
END

print <<END;
Here is even more content
which is printed with
heredoc style
END

但它应该匹配

<<END;
Here is more content
which is printed with
heredoc style
END

<<END;
Here is even more content
which is printed with
heredoc style
END

有人知道我的正则表达式有什么问题吗?

另一个问题:仅使用正则表达式是否可以捕获所有未指定为heredoc字符串的heredocs END

最佳答案

问题是 * 默认是“贪婪的”。 * 捕获所有它可以匹配的内容,直到 * 之前的模式失败。只有这样它才会返回。在您的情况下,该模式一直有效到字符串末尾。

为了防止它贪婪并检查它是否通过了应该结束的点(看看我在那里做了什么?:D),请在 * 之后添加 ?

<<END(.|\n)*?END

关于javascript - 用于在 JavaScript 中捕获 Heredoc 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com