求教一个 java 正则匹配的问题

2015-07-03 09:43:55 +08:00
 sophie2805
https://gist.github.com/sophie2805/53d8f3cbc4c9e969052f

代码如上,想把某网页上这一行匹配出来:

回帖内容必须为 <font color="#ff00ff">挖财 我的资产管家 </font>非此内容将收回铜钱奖励

可是用pattern和matcher匹配不到。

Pattern p = Pattern.compile("回帖内容必须为.+</font>非此内容将收回铜钱奖励");
Matcher r = p.matcher("driver.getPageSource().toString()");//(driver.getPageSource().toString());

我的理解是,Java里面String的编码都是Unicode,所以不因该存在问题啊,为啥匹配不到呢?

验证过,网页源码里确实含有以上内容。
2757 次点击
所在节点    Java
7 条回复
sophie2805
2015-07-03 09:49:18 +08:00
不好意思,代码贴错了
Pattern p = Pattern.compile("回帖内容必须为.+</font>非此内容将收回铜钱奖励");
Matcher r = p.matcher(driver.getPageSource().toString());//(driver.getPageSource().toString());

问题解决了

谢谢
dallaslu
2015-07-03 16:47:57 +08:00
在写挖财论坛的灌水机?
sophie2805
2015-07-04 17:58:14 +08:00
@dallaslu 额 是不是灌水呢,是自动领铜钱,裸辞在家的伤不起,缺钱~~~
dallaslu
2015-07-04 18:33:46 +08:00
@sophie2805 铜钱能花吗?
sophie2805
2015-07-04 18:42:22 +08:00
@dallaslu 能换书,还能换现金!!!!多么适合待业人员
wuhx
2015-07-07 22:07:50 +08:00
内容换行了,需要开启dotall模式
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#DOTALL

scala验证可以,java应该也一样

scala> val text = org.jsoup.Jsoup.connect("http://bbs.wacai.com/thread-648905-1-1.html").get.toString
scala> val pat = """(?s)回帖内容必须为 .+</font>非此内容将收回铜钱奖励""".r
scala> pat.findFirstMatchIn(text)
res52: Option[scala.util.matching.Regex.Match] =
Some(回帖内容必须为
<font color="#ff00ff">挖财 我的资产管家 </font>非此内容将收回铜钱奖励)

scala>
wuhx
2015-07-07 22:08:36 +08:00
或者换成
Pattern p = Pattern.compile("回帖内容必须为 \n.+</font>非此内容将收回铜钱奖励");

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202970

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX