0

非常に汚れたHTMLの文字列があります。解析する前に、これを変換したいと思います。

<TABLE><TR><TD width="33%" nowrap=1><font size="1" face="Arial">
NE
</font> </TD>
<TD width="33%" nowrap=1><font size="1" face="Arial">
DEK
</font> </TD>
<TD width="33%" nowrap=1><font size="1" face="Arial">
143
</font> </TD>
</TR></TABLE>

そのため、NE DEK 143解析が少し簡単になります。私はこの正規表現(RegexKitLite)を持っています:

NSString *str = [dataString stringByReplacingOccurrencesOfRegex:@"<TABLE><TR><TD width=\"33%\" nowrap=1><font size=\"1\" face=\"Arial\">(.+?)<\\/font> <\\/TD>(.+?)<TD width=\"33%\" nowrap=1><font size=\"1\" face=\"Arial\">(.+?)<\\/font> <\\/TD>(.+?)<TD width=\"33%\" nowrap=1><font size=\"1\" face=\"Arial\">(.+?)<\\/font> <\\/TD>(.+?)<\\/TR><\\/TABLE>" 
                                                     withString:@"$1 $3 $5"];

私は正規表現の専門家ではありません。誰かがここで私を助けてくれますか?

よろしく、ドードー

4

3 に答える 3

1

Amarghoshと、リンクされた質問の勝者であるbobinceは、一般的にこれについて正しいです。ただし、あなたはただ消毒しているだけなので、正規表現は実際には問題ありません。

まず、タグを取り除きます。

s/<.*?>//

次に、余分なスペースをすべて1つにまとめます。

s/\s+/ /

次に、先頭/末尾のスペースを削除します。

s/^\s+|\s+$//

次に、値を取得します。

^([^ ]+) ([^ ]+) ([^ ]+)$
于 2010-05-03T09:39:38.170 に答える
0

正規表現が失敗する理由についていくつか疑問があります(iPhone SDKで文字列をエスケープするためのルールを知らない場合):.改行と一致する必要がある場所で使用されるドット、スラッシュが不必要にエスケープされているように見えるなど、

ただし、この例では、抽出しようとしているテキストは、タグで囲まれていないという特徴があります。

したがって、のすべての出現を検索すると、(?m)^[^<>\r\n]$すべての一致が見つかるはずです。

于 2010-05-03T09:49:23.977 に答える
0

HTMLコードの階層が確かな場合は、フォントタグで囲まれたテキストを抽出できます。

Regex r = Regex(@"<\s*font((\s+[^<>]*)|(\s*))>(?<desiredText>[^<>]*)<\s*/\s*font\s*>")
//C# example
foreach(Match m in r.Matches(txt))
   result += m.Groups["desiredText"].Value.Trim()

; これは、フォントタグで囲まれたテキストであり、エッジに空白記号はありません。

于 2010-05-03T10:46:21.697 に答える