+ -
当前位置:首页 → 问答吧 → HTML标签匹配问题.比较着急,谢谢了

HTML标签匹配问题.比较着急,谢谢了

时间:2011-02-23

来源:互联网

如何匹配出
类似于
<meta  <meta/>
<input <input name="aaa" />
<div <div id="sss"/>
<link <link url="123" />
<test<test name='te'/>
等等, 想找到这种 以 <标签名开头 + 中间任意字符 或 没有 + 空格斜杠大于号(" />") 结尾的 标签 ,并不想找到  "<标签名" 开始,并没有结束的,正则表达式应该怎么写.

例如 我想找到 <input name="aaa" />,并不想让 <link  被找到,
<test name='te'/>能被找到 , <test 不能.

谢谢了, 万分感激.

作者: herrapfel   发布时间: 2011-02-23

本帖最后由 yinyuemi 于 2011-02-23 07:22 编辑

try:

sed -n -r '/^<(.*) <(.*)\/>$/p'

or

awk '/^<(.*)>$/ && length($0)>20'

作者: yinyuemi   发布时间: 2011-02-23

正则的话怎么写啊

作者: herrapfel   发布时间: 2011-02-23

/^\<\(.*\)\ \<\(.*\)\/\>$/

作者: yinyuemi   发布时间: 2011-02-23

不行啊,还是没出来

作者: herrapfel   发布时间: 2011-02-23

/^\\<("+key+"\\)\\  \\<\\("+key+".*)/>$

key 是我程序里取出的 html tag标签

作者: herrapfel   发布时间: 2011-02-23

只拿 <meta  这种的也可以
不匹配 <meta/> 和  <link name='123' /> 这种

作者: herrapfel   发布时间: 2011-02-23

有点乱,你是想要匹配字段的一部分值,还是只要满足匹配就全部输出

作者: yinyuemi   发布时间: 2011-02-23

<meta   <a><div/><meta /><abc><abc/><b><link name='111'/><h2/><key ssk='sss'/><link

拿到 key为 meta 时   获得 <meta  而不是 <meta />
key 为 link时 获得 <link 而不是 <link name='111'/>

作者: herrapfel   发布时间: 2011-02-23

回复 herrapfel


    再试试这个:
  1. key2=link
  2. echo "<meta   <a><div/><meta /><abc><abc/><b><link name='111'/><h2/><key ssk='sss'/><link" |grep -o "<$key2 "
  3. <link

  4. key1=meta
  5. echo "<meta   <a><div/><meta /><abc><abc/><b><link name='111'/><h2/><key ssk='sss'/><link" |grep -o "<$key [^/]"
  6. <meta  
复制代码

作者: yinyuemi   发布时间: 2011-02-23

sed 's/<.*\(<.*\)/\1/g' urfile

作者: mercuyr   发布时间: 2011-02-23

好的

作者: herrapfel   发布时间: 2011-02-23

<test<test name='te'/>
在<test后加一个空格, 变成 <test <test name='te'/>
用awk,
awk '{$1=""}{print $0}' urfile

作者: mercuyr   发布时间: 2011-02-23

热门下载

更多