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

问题描述:

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>"

现在就正常了.

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

相关推荐
一水鉴天19 小时前
整体设计 定稿 之9 最后收束 app.py: 应用项目的结构及其模型和框架 (豆包助手)
服务器·windows·microsoft
前端不太难20 小时前
从 Navigation State 反推架构腐化
前端·架构·react
wanhengidc20 小时前
云手机的适配性怎么样?
运维·服务器·安全·智能手机·云计算
小王师傅6620 小时前
【轻松入门SpringBoot】actuator健康检查(上)
java·spring boot·后端
梁辰兴20 小时前
计算机网络基础:使用集线器的星型拓扑
服务器·网络·计算机网络·集线器·计算机网络基础·梁辰兴·星型拓扑
jimy120 小时前
安卓里运行Linux
linux·运维·服务器
前端程序猿之路20 小时前
Next.js 入门指南 - 从 Vue 角度的理解
前端·vue.js·语言模型·ai编程·入门·next.js·deepseek
大布布将军20 小时前
⚡️ 深入数据之海:SQL 基础与 ORM 的应用
前端·数据库·经验分享·sql·程序人生·面试·改行学it
醒过来摸鱼20 小时前
Java classloader
java·开发语言·python
专注于大数据技术栈20 小时前
java学习--StringBuilder
java·学习