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

问题描述:

<#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}的<td标签. 请修改成 只匹配到包含有$(tableDetail.goodsPrice}的最里层td标签

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

现在就正常了.

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值