Objective C 解析中间字符的字符串
Objective C parse string for middle chars
这对我来说有点困惑。我有一个看起来像这样的字符串:
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:@"(with either < or >"] 但这将留下更多的解析尚未完成我认为应该有一种方法来获取标签之间的字符使用正则表达式或字符串比较或某种此类方法来解析
如有任何建议或帮助,我们将不胜感激。
谢谢
两件事。
您的正则表达式 没有转义正斜杠 .
您的正则表达式似乎 过于复杂 您正在尝试做的事情。
如果你想要的只是带有正则表达式的那个单独的中间字符,
试试这个:
<[a-z]+>(.*)<\/[a-z]+>
这是一个很棒的工具:
http://rubular.com
哎呀,你甚至可能逃脱:
<[a-z]+>(.*)<\/
编辑:
我部分地解决了你的问题,部分标签包含 a 到 z 以外的字符。所以给你:
<.+>(.*)<\/.+>
这对我来说有点困惑。我有一个看起来像这样的字符串:
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:@"(with either < or >"] 但这将留下更多的解析尚未完成我认为应该有一种方法来获取标签之间的字符使用正则表达式或字符串比较或某种此类方法来解析
如有任何建议或帮助,我们将不胜感激。
谢谢
两件事。
您的正则表达式 没有转义正斜杠 .
您的正则表达式似乎 过于复杂 您正在尝试做的事情。
如果你想要的只是带有正则表达式的那个单独的中间字符,
试试这个:
<[a-z]+>(.*)<\/[a-z]+>
这是一个很棒的工具:
http://rubular.com
哎呀,你甚至可能逃脱:
<[a-z]+>(.*)<\/
编辑:
我部分地解决了你的问题,部分标签包含 a 到 z 以外的字符。所以给你:
<.+>(.*)<\/.+>