加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式,忽略模式,如果它在引号中

发布时间:2020-12-13 21:53:54 所属栏目:百科 来源:网络整理
导读:编写一个非常简单的脚本解析器作为学校项目的一部分,虽然它不是必需的但我很好奇是否可以只使用正则表达式来完成. 语法类似于ASP,其中脚本以%开头,以%结尾. 它只支持一个命令“pr”,它与echo或Response.Write相同. 现在我正在使用这个正则表达式来查找脚本
编写一个非常简单的脚本解析器作为学校项目的一部分,虽然它不是必需的但我很好奇是否可以只使用正则表达式来完成.

语法类似于ASP,其中脚本以<%开头,以%>结尾.

它只支持一个命令“pr”,它与echo或Response.Write相同.

现在我正在使用这个正则表达式来查找脚本块:

(<%s*([sS]*?)s*%>)

但如果我有这样的命令:

<% pr "%>"; %>

……它显然只匹配:

<% pr "%>

有没有办法使用纯正则表达式来忽略引号内的结束标记?我主要担心的是它可能匹配引号之间的标签,但实际上它们在它们之外,如果这有意义的话.例如…

<% pr "hello world"; %> "

从技术上讲,结束标记被引号包围,但它不在“开放”然后“关闭”引用内,而是相反.

如果这可能是正则表达式非常整洁,否则我怀疑,如果我想支持这个功能,我将不得不手动迭代传入的文本并自己解析块,这也没什么大不了的.

谢谢!

我认为这个应该符合您的需求:<%(“.*?”|.*?)*?%> (见 Demo).

说明:

虽然.*匹配尽可能长,.*?匹配尽可能少.

例如(使用伪代码),

"#foo# #bar#".matches(/#(.*)#/).group(1) // will return ["foo# #bar"]

"#foo# #bar#".matches(/#(.*?)#/).group(1) // will return ["foo","bar"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读