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

问题描述:

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

现在就正常了.

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

相关推荐
j***518934 分钟前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
whltaoin34 分钟前
【 Web认证 】Cookie、Session 与 JWT Token:Web 认证机制的原理、实现与对比
前端·web·jwt·cookie·session·认证机制
Aerelin1 小时前
爬虫playwright入门讲解
前端·javascript·html·playwright
&&Citrus1 小时前
【杂谈】SNNU公共计算平台:深度学习服务器配置与远程开发指北
服务器·人工智能·vscode·深度学习·snnu
WZTTMoon1 小时前
Spring Boot 启动全解析:4 大关键动作 + 底层逻辑
java·spring boot·后端
章鱼哥7301 小时前
[特殊字符] SpringBoot 自定义系统健康检测:数据库、Redis、表统计、更新时长、系统性能全链路监控
java·数据库·redis
5***o5001 小时前
前端在移动端中的NativeBase
前端
深圳佛手1 小时前
Sharding-JDBC 和 Sharding-Proxy 区别
java
翼龙云_cloud1 小时前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑