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

问题描述:

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

现在就正常了.

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

相关推荐
程序员-Benothing18 分钟前
Shell输入输出详解:read、echo、printf、颜色输出
linux·运维·服务器
FPGA小徐42 分钟前
从 NEMU 到 AbstractMachine:程序、运行时环境与 AM 完全解析
linux·运维·服务器
sunshine22 girl44 分钟前
Java学习五 面向对象高级5 内部类1
java·学习
特创数字科技1 小时前
一个纯本地运行的图片处理工具:压缩 / 裁剪 / 九宫格 / 圆角 / 滤镜 / 拼图 / 水印,终生使用
前端
IT_陈寒2 小时前
Vue的v-if和v-for混用居然是个天坑
前端·人工智能·后端
天衍四九-2 小时前
【无标题】
前端·spring boot·mysql·nginx·docker
广州华水科技2 小时前
2026年单北斗GNSS变形监测系统推荐榜单,解锁GNSS位移监测新高度
前端
用户1305180712152 小时前
JDBC学习DAY2:从Statement到PreparedStatement
java
xcyxiner2 小时前
DicomViewer24 修复编译bug(window test 失败)
前端·qt