使用通义灵码解决复杂正则表达式替换字符串的问题.

问题描述:

html 复制代码
<#list softTables as softTable>                                                        <table                                                            style="text-align: center;margin-bottom: 10px;border-collapse:collapse;border:none;"                                                            align="center" cellpadding="0" border="0" cellspacing="1">                                                            <tbody>                                                                <tr>                                                                    <td width="136" style="border:solid #000 1px;">                                                                        <p                                                                            style="font-size: 14px;line-height: normal;margin-top: 10px;margin-bottom: 10px;">                                                                            ${softTable.title1}</p>                                                                    </td>                                                                    <td width="98" style="border:solid #000 1px;">                                                                        <p                                                                            style="font-size: 14px;line-height: normal; margin-top: 10px;  margin-bottom: 10px;">                                                                            ${softTable.title2}</p>                                                                    </td>                                                                    <td width="18" style="border:solid #000 1px;">                                                                        <p                                                                            style="font-size: 14px;line-height: normal; margin-top: 10px;  margin-bottom: 10px;">                                                                            ${softTable.title3}</p>                                                                    </td>                                                                    <td width="97" style="border:solid #000 1px;">                                                                        <p                                                                            style="font-size: 14px;line-height: normal; margin-top: 10px;  margin-bottom: 10px;">                                                                            ${softTable.title4}</p>                                                                    </td>                                                                    <td width="105" style="border:solid #000 1px;">                                                                        <p                                                                            style="font-size: 14px;line-height: normal; margin-top: 10px;  margin-bottom: 10px;">                                                                            ${softTable.title5}</p>                                                                    </td>                                                                </tr>                                                                <#list softTable.tableDetails as tableDetail>                                                                    <tr>                                                                        <td width="136" style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ${tableDetail.goodsVersion}</p>                                                                        </td>                                                                        <td width="98" style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ${tableDetail.goodsName}</p>                                                                        </td>                                                                        <td width="18" style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ${tableDetail.goodsNum}</p>                                                                        </td>                                                                        <td width="97" style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ¥${tableDetail.goodsPrice}</p>                                                                        </td>                                                                        <td width="105" style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ${tableDetail.goodsRemark}</p>                                                                        </td>                                                                    </tr>                                                                </#list>                                                                <#list softTable.tableFooters as tableFooter>                                                                    <tr>                                                                        <td colspan="2" width="253"                                                                            style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ${tableFooter.totalName}</p>                                                                        </td>                                                                        <td colspan="3" width="262"                                                                            style="border:solid #000 1px;">                                                                            <p                                                                                style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;">                                                                                ¥${tableFooter.softTotalPrice}                                                                                ${tableFooter.softTotalPriceChinese}</p>                                                                        </td>                                                                    </tr>                                                                </#list>                                                            </tbody>                                                        </table>                                                    </#list>

需要把

<td width="97" style="border:solid #000 1px;"> <p style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;"> ${softTable.title4}</p> </td>

以及

<td width="97" style="border:solid #000 1px;"> <p style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;"> ¥${tableDetail.goodsPrice}</p> </td>

替换成""

然后把<td colspan="3" width="262" 改为 <td colspan="2" width="262"

正则表达式比较复杂.而且容易出错.所以用AI来写.

第一段对话:

现在需要通过核心字符,使用正则表达式提取字符串,以"<td"开头"</td>"结尾 核心字符"${softTable.title4}" 提取出的完整的字符串:

<td width="97" style="border:solid #000 1px;"> <p style="font-size: 14px;line-height: normal; margin-top: 10px; margin-bottom: 10px;"> ${softTable.title4}</p> </td>

灵码给的正则表达式:

复制代码
String title4Regex = "<td[^>]*>.*?\\$\\{softTable\\.title4\\}.*?</td>";
复制代码
String goodsPriceRegex = "<td[^>]*>.*?\\$\\{tableDetail\\.goodsPrice\\}.*?</td>";

但是这个正则表达式 实际上有问题,会多匹配很多td

这里有正则表达式编写的工具

https://www.jyshare.com/front-end/854/

我又给灵码提要求

这个表达式 会匹配到 包含{softTable.title4}的\(tableDetail.goodsPrice}的最里层td标签

String goodsPriceRegex = "<td\^\>*width=\"97\"\^\>*>(?:(?!<td)\\\\s\\\\S)*?\\$\\{tableDetail\\.goodsPrice\\}(?:(?!</td>)\\\\s\\\\S)*?</td>"

现在就正常了.

人工智能着实提升了生产力.一起自己查资料,琢磨的话估计要大半天.

相关推荐
麻瓜生活睁不开眼25 分钟前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
dear_bi_MyOnly42 分钟前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
2601_953720821 小时前
【计算机毕业设计】基于Spring Boot的心理健康咨询与评测系统的设计与实现
java·spring boot·后端
丈剑走天涯2 小时前
JDK 17 正式特性
java·开发语言
东方小月2 小时前
从零开发一个 Coding Agent(四):使用状态机校验大模型事件流
前端·人工智能·后端
圣光SG2 小时前
Java操作题练习(七)
java·开发语言·算法
Csvn2 小时前
🧩 ESM vs CJS 混用的 7 个「天坑」——从 TypeScript 编译到 Node 与浏览器
前端
Csvn3 小时前
🎯 Web 性能 API 集合:Performance Observer 的 5 个冷门妙用
前端
Csvn3 小时前
深入 React 闭包陷阱:从根源上理解并根治 stale closure
前端
土星云SaturnCloud3 小时前
边缘侧大模型部署的新利器——国科环宇GK 300I大模型一体机深度评测与架构解析
服务器·人工智能·ai·边缘计算