BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #23852同步于 2012/11/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求问正则表达式~~~感激涕零

listar
2012/11/9镜像同步9 回复
<?xml version="1.0" encoding="utf-8"?><Data svc_ID="9d64de08-6523-4da9-925c-144f0970cd96" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Datapoints><value datatype="temperature" Unit="鈩? Time="2012-11-09T10:50:55">17.4</value></Datapoints></Data> 怎么在这么一堆东西里提取出 17.4 这个数字啊?是用浮点数吗?可是用^\\d+(\\.\\d+)?$ 表示非负浮点数 不对欸……菜鸟一个,求各位大神大侠指点哇~~~~~~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zx723机器人#1 · 2012/11/9
新手bd。不过既然是xml为啥不直接解析xml来获取呢?还有就是lz的正则应该只有取出独立一行的浮点数吧。如果要找的浮点数都在<value></value>标签中,就先配置这个标签好了
listar机器人#2 · 2012/11/9
谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普…… 【 在 zx723 的大作中提到: 】 : 新手bd。不过既然是xml为啥不直接解析xml来获取呢?还有就是lz的正则应该只有取出独立一行的浮点数吧。如果要找的浮点数都在<value></value>标签中,就先配置这个标签好了
zlwmosquito机器人#3 · 2012/11/9
【 在 listar 的大作中提到: 】 : 谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普…… 应该可以吧,当做输入流来处理
zx723机器人#4 · 2012/11/9
【 在 listar 的大作中提到: 】 : 谢谢哦~~~不过我有点儿不太明白的是,我的这个一堆东西,不是现成的xml文件,是从URL上面提取出来的,这样也可以当作xml文件一样来解析吗?解析的话,必须是标准xml文件吧?求科普…… 恩,这个好像格式有些问题,在浏览器中打开报格式错误。我也是个新手,那试着写个正则匹配那个value标签吧,我不太清楚你要提取的浮点数是不是都在value标签里面。等大牛来指点下吧
wks机器人#5 · 2012/11/9
Use this XPath: "//value/text()". package com.github.wks.javajunks; import java.io.ByteArrayInputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; public class XPathTest { public static String xmlStr = "<?xml version='1.0' encoding='utf-8'?><Data svc_ID='9d64de08-6523-4da9-925c-144f0970cd96' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><Datapoints><value datatype='temperature' Unit='鈩' Time='2012-11-09T10:50:55'>17.4</value></Datapoints></Data> "; public static void main(String[] args) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new ByteArrayInputStream(xmlStr .getBytes("UTF-8"))); XPathFactory xpf = XPathFactory.newInstance(); XPath xPath = xpf.newXPath(); XPathExpression expr = xPath.compile("//value/text()"); String result = expr.evaluate(doc); System.out.println(result); } } Output: 17.4
listar机器人#6 · 2012/11/9
哇晒!要不要这么腻害!!! 【 在 wks 的大作中提到: 】 : Use this XPath: "//value/text()". : [code=java] : package com.github.wks.javajunks; : ...................
zx723机器人#7 · 2012/11/10
【 在 wks 的大作中提到: 】 : Use this XPath: "//value/text()". : [code=java] : package com.github.wks.javajunks; : ................... 大牛就是厉害,不过lz给的那个xml有点格式问题,不知道是手误,还是提取时有问题。大神是自己手动修改了那个xml字符串?
wks机器人#8 · 2012/11/10
可能是字符集的问题。 【 在 zx723 的大作中提到: 】 : 大牛就是厉害,不过lz给的那个xml有点格式问题,不知道是手误,还是提取时有问题。大神是自己手动修改了那个xml字符串?
msyp机器人#9 · 2012/11/12
^\\d+(\\.\\d+)?$ ^表示字符串开始,$表示字符串结束,很明显1不是该字符串的开始,4也不是结束 把上述两个符号去掉试试看