gpt4 book ai didi

java - 使用正则表达式的 JSP 文本处理

转载 作者:行者123 更新时间:2023-11-29 09:13:49 26 4
gpt4 key购买 nike

我有大量 (>1500) 个 JSP 文件要转换为 JSPX。我正在使用一种工具来解析格式良好的 JSP 并转换为 JSPX,但是,我的 JSP 并非都是格式良好的 :)

我的解决方案是预处理 JSP 并转换不整洁的代码,以便该工具能够正确解析它们。我试图解决的主要问题是未加引号的属性值。示例:

<INPUT id="foo" size=1>
<input id=body size="2">

我目前用于查找这些的正则表达式是(Java 字符串格式):

"(\\w+)=([^\"' >]+)"

我的替换字符串是(Java 字符串格式):

"$1=\"$2\""

这很好用,除了少数模式,这两种模式都涉及内联脚本。例如:

<INPUT id=foo value="<%= someBean.method("a=b") %>">

在这种情况下,我的模式匹配字符串文字“a=b”,这是我不想做的。我希望发生的是正则表达式会忽略 <% 和 %> 之间的任何内容。是否有一个正则表达式可以完成我想做的事情?

编辑:更改为标题以阐明我不是在尝试使用正则表达式解析 HTML/JSP...我正在做一个简单的句法转换来准备要解析的输入。

最佳答案

如果一个句子包含任意数量的匹配标记,例如双引号,那么这个句子属于上下文无关语言,根本无法用专为处理常规语言而设计的 Regex 进行解析。

要么可能存在一些允许使用 Regex 的简化假设(例如,没有不匹配的双引号,只有一定数量的双引号等),要么您需要考虑使用(创建)词法分析器/parser 对于上下文无关语言的情况。 ANTLR是一个很好的工具。

关于java - 使用正则表达式的 JSP 文本处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726925/

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