regex - RegEx表达式将捕获两个字符之间的所有内容,包括多行 block

标签 regex

我想捕获<%和%>之间的所有文本和文本块。

例如:

<html>
<head>
<title>Title Here</title>
</head>
<body>
<% include("/path/to/include") %>
<h1>Test Template</h1>
<p>Variable: <% print(second_var) %></p>
<%

variable = value;

foreach(params here)
{
    code here
}

%>
<p><a href="/" title="Home">Home</a></p>
</body>
</html>


我尝试过\<\%(.*)\%\>,但是它将捕获所有内容,包括<h1>Test Template</h1>块。

最佳答案

您正在使用哪个正则表达式引擎?

<%(.*?)%>


应该在启用“点匹配换行符”选项的情况下工作。如果您不知道如何设置,请尝试

<%([\s\S]*?)%>


要么

(?s)<%(.*?)%>


无需顺便转义<%>

关于regex - RegEx表达式将捕获两个字符之间的所有内容,包括多行 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000508/

相关文章:

regex - 在 PowerShell/PowerCLI 中将前缀附加到字符串

正则表达式(如果有效的 WebSocket 地址)

sed 中的正则表达式替换特定字符串

java - 将特定行上的数字分配给变量

regex - 使用正则表达式从 ps 输出中 grep 部分文本

regex - 如何使用awk从二进制文件中提取版本号

regex - 如何从文件的最后/结尾部分获取第 n 个值?

regex - 与正则表达式匹配的 URL 路由

regex - 每个 Referer 的 Apache 条件 header

regex - 包含一个单词但不包含另一个单词的字符串的正则表达式