正则表达式问题求救

辉歌 2010-01-05 08:46:44
现有网页。摘抄部分如下:


<span style="font-size:14px;color:#FF0000">需要的文字</span>

我搜索过了,<span style="font-size:14px;color:#FF0000">全文只有这一行。

我想得到文字 “需要的文字”

我到想法是这样的。用grep工具。可是我不知道怎么得到 我要的东西。
请帮忙。
...全文
99 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
steptodream 2010-01-06
不正好吗
<span style=\"font-size:14px;color:#FF0000\">
向后 ? <=
</span>向前 ?=
不正好是你想要的东西
<span style=\"font-size:14px;color:#FF0000\">你想要的</span>
----------------------------------向后------>你想要的<-向前--
  • 打赏
  • 举报
回复
辉歌 2010-01-05
请高手讲解下?= 和?<= 关系。

我到理解是
向前查找:我要找的文字是 “需要的文字”,他的前面是<span style=\"font-size:14px;color:#FF0000">
所以需要用一个前向查找?=。同样的,他到后面是</span>所以要用后向查找 ?<=

可是正确的表达式刚好相反呢。不能理解啊。

这个向前向后到底相对于什么来说的呢?书上说是相对于查找的文字。我是以 “需要的文字”为基础向前向后的啊。
哪里不对了?
  • 打赏
  • 举报
回复
辉歌 2010-01-05
搞定。
grep -Po "(?<=<span style=\"font-size:14px;color:#FF0000\">).*(?=</span>)" reg.html

前向后向换了个个。还没有理解是怎么回事情。

  • 打赏
  • 举报
回复
辉歌 2010-01-05
[Quote=引用 4 楼 qgw_2000 的回复:]
用sed吧.
sed 's$ <span style="font-size:14px;color:#FF0000">\(.*\) </span>$\1$' reg.html
其中$为分隔符,通常用/为了和 </span>里的区别,所以用了$。



[/Quote]

不对。
把整个网页显示出来了。
  • 打赏
  • 举报
回复
qgw_2000 2010-01-05
用sed吧.
sed 's$<span style="font-size:14px;color:#FF0000">\(.*\)</span>$\1$' reg.html
其中$为分隔符,通常用/为了和</span>里的区别,所以用了$。


  • 打赏
  • 举报
回复
辉歌 2010-01-05
我大概看了下正则表达式的书籍,提到了向前查找和向后查找。以及子表达式。但是grep好像不支持。
我用的下面到命令:

grep -Po "(?=<span style=\"font-size:14px;color:#FF0000\">).*(?<=</span>)" reg.html

-P是用perl语法。
?=是向前查找。()是子表达式。
?<=是向后查找。

返回的 结果是整行,而不是我要的文字。

有其他工具吗?或者该怎么写呢?
  • 打赏
  • 举报
回复
freetstar 2010-01-05



strings 文件名|grep '要搜索的字符串'
  • 打赏
  • 举报
回复
jianzhibeihang 2010-01-05
不懂 帮顶了
  • 打赏
  • 举报
回复
相关推荐
发帖
Linux/Unix社区

2.2w+

社区成员

Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
帖子事件
创建了帖子
2010-01-05 08:46
社区公告
暂无公告