Objective C解析中间字符的字符串

时间:2015-01-08 20:06:48

标签: objective-c parsing nsstring

这对我来说有点儿不足。我有一个看起来像这样的字符串:

fanspd<fanspd>3</fanspd>
doorinprocess<doorinprocess>0</doorinprocess>
timeremaining<timeremaining>0</timeremaining>
macaddr<macaddr>60:CB:FB:99:99:C1</macaddr>
ipaddr<ipaddr>10.0.0.6</ipaddr>
model<model>4.4eWHF</model>
softver: <softver>2.14.2</softver>
interlock1: <interlock1>0</interlock1>
interlock2: <interlock2>0</interlock2>
cfm: <cfm>2200</cfm>
power: <power>120</power>
inside: <house_temp>-99</house_temp>
<DNS1>10.0.0.1</DNS1>
attic: <attic_temp>76</attic_temp>
OA: <oa_temp>-99</oa_temp>
server response: <server_response>Ó£àêEE²ç©þ]kõ «jsÐ</server_response>
DIP Switches: <DIPS>11100</DIPS>
Remote Switch: <switch2>1111</switch2>
Setpoint:<Setpoint>0</Setpoint>

该字符串包含“/ n”,因此我将其拆分为看似

的相应行
fanspd<fanspd>0</fanspd>

我真正想要的只是中间的字符。在上面的例子中它将是0.

我可以将所有内容与正则表达式匹配,但请执行以下操作:

(.*)(<[a-z]+>)(.*)(</[a-z]+>)

但是我想要的是更多可以排除或剥离或删除所有垃圾并抓住中间字符的东西。

(!(.*)(!<[a-z]+>))(.*)(!(</[a-z]+>)) 

我已经尝试过这个并不起作用。我还想过做另一个[NSstring componentsSeparatedByString:@“(带有&lt;或或&gt;”),但这样就会有更多的解析尚未完成,我认为应该有一种方法可以让中间的chars带有正则表达式或字符串比较的标签或一些解析

的方法

任何建议或帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:2)

两件事。
你的正则表达式不会逃避正斜杠 对于您正在尝试的内容,您的正则表达式似乎过于复杂

如果您想要的只是具有正则表达式的单个中间字符,

试试这个:
的百分比抑制率A-Z] + GT;&LT(*); \ / [A-Z] +&GT;

这是一个很好的工具: http://rubular.com

哎呀,你甚至可以逃脱:
的百分比抑制率A-Z] + GT;&LT(*); \ /

修改

我部分地解决了你的问题,一些标签部分向下包含除了通过z之外的字符。所以你走了:

<强>&LT; + GT;(*)&LT; \ /.+& GT;