可能重复:
RegEx match open tags except XHTML self-contained tags
摘自输入文件
<TD class="clsTDLabelWeb" width="28%">Municipality: </TD>
<TD style="WIDTH: 394px" class="clsTDLabelSm" colSpan="5">
<span id="DInfo1_Municipality">JUPITER</span></TD>
我的正则表达式
(?<=<span id="DInfo1_Municipality">)([^</span>]*)
我有一个HTML文件保存到磁盘。 我想使用grep搜索文件并输出特定范围的内容,但我不知道这是否正确使用了grep。当我在文件上运行grep时,表达式从另一个文件读取(所以我不会弄乱任何特殊字符),它不会输出任何内容。我在RegExr中测试了表达式,它匹配“JUPITER”,这正是我想要的返回。非常感谢你的帮助!
期望输出
JUPITER
答案 0 :(得分:3)
尝试一下:
sed -n 's|^<span id="DInfo1_Municipality">\([^<]*\)</span></TD>$|\1|p' file
或使用GNU grep
和你的正则表达式:
grep -Po '(?<=<span id="DInfo1_Municipality">)([^</span>]*)'
答案 1 :(得分:1)
Grep不支持那种类型的正则表达式(lookbehind断言),并且它是一个非常糟糕的工具,但是对于给定它可行的示例,将在许多情况下中断。
grep -io "<span id=\"DInfo1_Municipality\">.*</span>" file.htlm | grep -io ">[^<]*" | grep -io [^>]*
像那样疯狂的事情,不是一个好主意。
答案 2 :(得分:1)
sed -n '/DInfo1_Municipality/s/<\/span.*//p' file | sed 's/.*>//'