我解析一些事務,例如3周的交易是這樣的:乾淨的HTML代碼用正則表達式
<TR class=DefGVRow>
<TD>29/04/2013</TD>
<TD><A href="javascript:__doPostBack('ctl00$cp$GVMov','Deposito$29/04/2013|0140959158|+|0,00')">DEPOSITO 0140959158</A></TD>
<TD>0140959158</TD>
<TD align=right>336,00</TD>
<TD align=center>+</TD>
<TD align=right>16.210,60</TD></TR>H
<TR class=DefGVAltRow>
<TD>29/04/2013</TD>
<TD>RETIRO ATM CTA/CTE</TD>
<TD>1171029739</TD>
<TD align=right>600,00</TD>
<TD align=center>-</TD>
<TD align=right>15.610,60</TD></TR>
<TR class=DefGVRow>
<TD>29/04/2013</TD>
<TD>C.SERV.CAJERO AUT.</TD>
<TD>1171029739</TD>
<TD align=right>3,25</TD>
<TD align=center>-</TD>
<TD align=right>15.607,35</TD></TR>
而且我現在的正則表達式是:
<TR class=\w+>
<TD>(?<day>\d{1,2})/(?<month>\d{1,2})/(?<year>\d{4})</TD>
<TD>(?<description>.+?)</TD>
<TD>(?<id>\d{3,30})</TD>
<TD.+?>(?<amount>[\d\.]{1,20},\d{1,10})</TD>
<TD.+?>(?<info>.+?)</TD>
<TD.+?>(?<balance>[\d\.]{1,20},\d{1,10})</TD></TR>
我如何可以編輯
<TD>(?<description>.+?)</TD>
要處理與同一提取的其他部分匹配的可選標記嗎? (基本上:捕獲組時如何忽略A標籤)
謝謝!
對於你的理智的緣故,解析這個HTML。 – Blender 2013-05-01 01:42:59
正則表達式不是解析html/xml的最佳方式。看看[XmlDocument](http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx),你可以使用XPath來解析它的元素,並且更容易實現你的目標。 – 2013-05-01 01:42:59
**不要使用正則表達式來解析HTML **。你不能用正則表達式可靠地解析HTML,你將面臨悲傷和挫折。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用已經編寫,測試和調試的PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php。 – 2013-05-01 02:30:22