我正在用HTML格式设计一个用Outlook通过电子邮件发送的报告。
为此,我首先加载一个HTML模板,在该模板中可以使用预定义的标记(如CustomerName )插入所有动态部件。
<p>You will find below reports for customer [CustomerName] dated [ReportdDate]</p>
<tag-1>
<h3>TableTitleA</h3>
<table>
<thead id="t01">
<tr>
<th align='center' width='80'>Order Nr</th>
<th align='left' width='400'>Date</th>
<th align='left' width='200'>Info</th>
<th align='center' width='200'>Site Name</th>
</tr>
</thead>
<tbody>
[TableA]
</tbody>
</table>
</tag-1>
<tag-2>
<h3>TableTitleB</h3>
<table>
<thead id="t01">
<tr>
<th align='center' width='80'>Order Nr</th>
<th align='left' width='100'>Date</th>
<th align='left' width='400'>Info</th>
<th align='left' width='200'>Site Name</th>
</tr>
</thead>
<tbody>
[TableB]
</tbody>
</table>
</tag-2>
<p>Best regards</p>此模板可以插入两个HTML表:TableA和TableB。
但有时一个表没有数据。所以,我想删除完整的HTML部分。为了达到这个目的,我插入了假标签:
<tag-1></tag-1> and <tag-2></tag-2>然后使用TRegEx删除整个部分,包括两个假标记。这里运作得很好:
https://regex101.com/r/5OFlyC/1
但是,使用Delphi中的代码,它不能像预期的那样工作:
TRegEx.Replace(MessageBody.Text, '<tag-1>.*?</tag-1>', '');你能告诉我这里出了什么问题吗?
我的问题已经解决了。感谢你们所有人
发布于 2021-04-07 15:46:10
只需使用roSingleLine选项来处理行提要:
MessageBody.Text := TRegEx.Replace(MessageBody.Text, '<tag-1>.*?</tag-1>', '', [roSingleLine]);发布于 2021-04-07 15:21:44
首先,必须从字符串中删除所有CR,然后在< and >之前使用带转义的表达式
S:=StringReplace(messagebody.Text,#13#10,'<br>',[rfReplaceAll]);
S:=TRegEx.Replace(S,'(\<tag-1\>.*?\<\/tag-1\>)','');
messagebody.text:=StringReplace(S,'<br>',#13#10,[rfReplaceAll]);https://stackoverflow.com/questions/66988019
复制相似问题