316428696 发表于 2010-1-18 17:17:25

请问这个正则表达式如何匹配

本帖最后由 316428696 于 2010-1-22 23:51 编辑

{"responseData": {"translatedText":"红色"}, "responseDetails": null, "responseStatus": 200}

我想得到红色这两个字,正则不晓得如何写!就是取translatedText":"红色"}中引号之间的值!

llztt 发表于 2010-1-18 17:24:31

这个稍微看下正则的帮助就能写啊。。
如果就简单的取translatedText":"红色"}引号里的内容,甚至不用正则单用字符串一般处理都可以提取出来。。

afan 发表于 2010-1-18 17:30:40

StringRegExp($str, 'translatedText\":\"([^\"]+)\"', 3)

sanmoking 发表于 2010-1-19 13:44:22

不用正则
$data = '{"responseData": {"translatedText":"红色"}, "responseDetails": null, "responseStatus": 200}
'
$a = 'translatedText":"'
$b = '"}, "responseDetails'

$start = StringInStr ($data, $a,0,$c,$s)+StringLen ($a);查找$a的结束位置
$end = StringInStr ($data,$b,0,1,$start);从$a的结束位置开始查找$b的位置
$amount = $end - $start;获得中间部分字符的数量
$txt=StringMid ($data, $start, $amount);得到中间部分的字符

sanmoking 发表于 2010-1-19 13:45:05

楼上的原理可以用到很多很多这样的字符获取的地方,对于不会正则的网友很有用的啊。

316428696 发表于 2010-1-21 12:17:13

我已经解决了,用的截取字符串的方式!还是非常谢谢各位!

316428696 发表于 2010-1-21 12:18:39

; 截取结果
        ;$Istart        = StringInStr($OutText,'":"',2) ;34 start
        ;$Iend                 = StringInStr($OutText,'"}, ',2) ;40 end
        ;$OutText    = StringMid($OutText,$Istart + 3,$Iend-($Istart+3)) ;截取
页: [1]
查看完整版本: 请问这个正则表达式如何匹配