1
一些XML數據:正則表達式太貪婪;吃我的幾乎所有行
<Row A1:Height="17" ss:StyleID="s139">
<Cell ss:StyleID="s69"><Data ss:Type="String">Title1</Data><NamedCell
ss:Name="Print_Titles"/><NamedCell ss:Name="_FilterDatabase"/><NamedCell
ss:Name="Print_Area"/></Cell>
<Cell ss:StyleID="s70"><Data ss:Type="String">Title2</Data><NamedCell
ss:Name="Print_Titles"/><NamedCell ss:Name="_FilterDatabase"/><NamedCell
ss:Name="Print_Area"/></Cell>
</Row>
<Row A2:Height="17" ss:StyleID="s139">
<Cell ss:StyleID="s69"><Data ss:Type="String">Title1</Data><NamedCell
ss:Name="Print_Titles"/><NamedCell ss:Name="_FilterDatabase"/><NamedCell
ss:Name="Print_Area"/></Cell>
<Cell ss:StyleID="s70"><Data ss:Type="String">Title2</Data><NamedCell
ss:Name="Print_Titles"/><NamedCell ss:Name="_FilterDatabase"/><NamedCell
ss:Name="Print_Area"/></Cell>
</Row>
....
使用正則表達式我想才發現,含有細胞「標題1」和「標題2」,在它的第一行。
-(NSString *)extractDataFromXMLString:(NSString *)xmlString{
NSString *headerPattern =
@" *<Row[^>]*>\n"
@" *<Cell[^>]*>.*Title1.*</Cell>\n"
@" *<Cell[^>]*>.*Title2.*</Cell>\n"
@" *</Row>";
NSError *error = NULL;
NSRegularExpression *headerExpression = [NSRegularExpression
regularExpressionWithPattern:headerPattern
options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:&error];
NSRange rangeOfFirstMatch = [headerExpression rangeOfFirstMatchInString:xmlString options:0 range:NSMakeRange(0, [xmlString length])]
return [xmlString substringWithRange:rangeOfFirstMatch]
}
但是我得到的整個字符串返回 誰能幫助我?
我正在從一個更大的XML源恢復並添加?爲這一小段代碼工作,但不適用於更大的一組數據。不過,你對XML解析是正確的,謝謝你讓我直觀。 – 2013-04-20 07:01:56