需要正则表达式语法建议

时间:2012-07-12 00:42:54

标签: regex sed

有人可以告诉我这里我可能做错了什么:

sed 's/&.*?;\s//'

我正在尝试删除除“此文字”之外的所有内容

lt;td rowspan="2" width="80" valign="top" >
<img src="http://foo.bar/image.jpeg" />
</td>
<td>
THIS TEXT


3 个答案:

答案 0 :(得分:0)

如果您搜索的字符串不变,则可以使用简单的grep

grep -o "THIS TEXT" file.txt

否则,您可以使用sed和一些模式匹配,尝试:

sed -e 's/&.*;$//' -e '/^$/d' -e '/^lt;td/d' file.txt

您可能需要包含多个表达式,例如:-e '/^lt;td/d',以删除数据文件中的其他不需要的行(如果它们包含它们)。

HTH

答案 1 :(得分:0)

您的正则表达式&.*?;\s搜索:

  • 一个apersand &
  • 任意多个任意字符.*
  • 问号?
  • 一个分号;
  • 一个空格字符\s

但是样本文本中;之后没有问号,也没有空格。

请注意,?默认情况下不会被解释为重复运算符。如果需要,您需要使用sed -r(或Mac上的sed -E)启用“扩展”正则表达式。这是向后兼容的事情。

答案 2 :(得分:0)

你的意思是?

bash:/home/tene>cat file
lt;td rowspan="2" width="80" valign="top" >
<img src="http://foo.bar/image.jpeg" />
</td>
<td>
THIS TEXT


bash:/home/tene>sed -e '/^[&l]/d' -e 's/
$//g' file
THIS TEXT