簡體   English   中英

正則表達式不匹配

[英]Regular Expression doesn't match

我有一個非常不干凈的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"];

我不是Regex的專家。 有人可以幫我嗎?

問候,渡渡鳥

Amarghosh和bobince是鏈接問題的獲獎者,對此大體上是正確的。 但是,由於您只是在進行衛生處理,因此正則表達式實際上還不錯。

首先,剝離標簽:

s/<.*?>//

然后將所有多余的空間折疊成一個:

s/\s+/ /

然后刪除前導/后綴空間:

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

然后獲取值:

^([^ ]+) ([^ ]+) ([^ ]+)$

我對為什么您的正則表達式可能會失敗(我不知道iPhone SDK中的字符串轉義規則)有一些懷疑:點. 用在必須與換行符匹配的地方,斜杠看起來像是不必要的轉義,等等。

但是:在您的示例中,您要提取的文本的特征是不被標簽包圍。

因此,搜索所有出現的(?m)^[^<>\\r\\n]$都將找到所有匹配項。

如果您確定自己的html代碼層次結構,則可以僅提取由font-tags括起來的文本:

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()

; 它是由字體標簽包圍的文本,邊緣沒有空格符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM