正则表达式发出匹配的HTML标记
所以我尝试使用sed(在这些系统上必须使用sed,所以请不要只推荐使用Perl)来匹配HTML标记并从中获取内容。HTML标记大致如下所示:正则表达式发出匹配的HTML标记,html,regex,linux,bash,sed,Html,Regex,Linux,Bash,Sed,所以我尝试使用sed(在这些系统上必须使用sed,所以请不要只推荐使用Perl)来匹配HTML标记并从中获取内容。HTML标记大致如下所示: <div class="SectionText"> Received poor service or think your current mechanic is ripping you off? Get some help from <a href="http://www.union.umd.edu/gradlegalaid/index
<div class="SectionText"> Received poor service or think your current mechanic is ripping you off? Get some help from <a href="http://www.union.umd.edu/gradlegalaid/index.htm" target="_blank">Graduate Legal Aid</a> or consult the <a href="http://www.oag.state.md.us/Consumer/index.htm" target="_blank">Maryland Attorney General Office of Consumer Protection</a> at <a href="mailto:consumer@oag.state.md.us">consumer@oag.state.md.us</a> or through their hotline at 410-528-8662 or 888-743-0023.<br /></div>
服务不好或认为你现在的机修工在欺骗你?从或通过其热线410-528-8662或888-743-0023获得帮助或咨询。
都在一条线上。所以,我写了这个。。。但它不起作用
sed 's/<div class=\"SectionText\">\([^<\/div>]*\)<\/div>/\1/g'
sed's/\([^]*\)/\1/g'
这不会改变任何文本
我试图将此网站用作指导原则-(在RegExp混乱中)\
最重要的是,这行脚本不要贪心,直到最后一行才匹配,除了尝试在html上使用正则表达式(请参阅),我看到的第一个问题是:
[^]*
这意味着匹配任何不是
的字符。显然,这里有一个d
和一个i
。(“Receivedpoor serv…”
如果设置为使用正则表达式,并且您有一个非常受控/可预测的输入,您可以简单地执行[^]
,假设您的文本没有这些字符。但是,我看到您是这样做的,因为您的div中有标记
但是,如果您这样做:
sed's/\(.\)/\1/g'
只要没有多个
s,它就可以工作。*
只在找到
之前匹配,除了尝试在html上使用正则表达式(请参阅),我看到的第一个问题是:
[^]*
这意味着匹配任何不是
的字符。显然,这里有一个d
和一个i
。(“Receivedpoor serv…”
如果设置为使用正则表达式,并且您有一个非常受控/可预测的输入,您可以简单地执行[^]
,假设您的文本没有这些字符。但是,我看到您是这样做的,因为您的div中有标记
但是,如果您这样做:
sed's/\(.\)/\1/g'
只要没有多个
s,它就可以工作。*
仅在找到
之前匹配
这表示“非
这表示“任何非的字符序列,我认为你应该在第一个(
和)之前删除\
)
@Bjørne Malmanger:他需要这些字符来从命令行的parens中转义,因为他使用的是sed
@Bjørne Malmanger,@Jeff B:No,这些是sed时髦的正则表达式语法的一部分。它使用\(
和\)
进行分组,使用\
进行替代@真理是那些能做到的人。见和。一切皆有可能,但并非一切都是权宜之计。任何想问怎么做的人都不应该尝试。我认为你应该在第一个(
和)之前删除\
)
@Bjørne Malmanger:他需要这些来逃离命令行,因为他使用的是sed
@Bjørne Malmanger,@Jeff B:No,这些是sed时髦的正则表达式语法的一部分。它使用\(
和\)
进行分组,使用\
进行替代@真理是那些能做到的人。见和。一切皆有可能,但并非一切都是权宜之计。任何必须问怎么做的人,当然不应该尝试。啊,你是对的。我想他可以在非
上进行匹配,希望它们不会出现在文本中。但是,无论如何,他不应该使用正则表达式。已编辑。*
是贪婪的。对,我就是这么说的。“只要没有嵌套的div
s”,实际上,我想这有点不同。我想我应该说,只要您没有多个
标记。请参阅和。一切皆有可能,但并非一切都是权宜之计。任何必须问怎么做的人,当然不应该尝试。啊,你是对的。我想他可以在非
上进行匹配,希望它们不会出现在文本中。但是,无论如何,他不应该使用正则表达式。已编辑。*
是贪婪的。对,我就是这么说的。“只要没有嵌套的div
s”,实际上,我想这有点不同。我想我应该说,只要您没有多个
标记。请参阅和。一切皆有可能,但并非一切都是权宜之计。任何一个不得不问怎么做的人,当然不应该去尝试。
[^<\/div>]*
sed 's#<div class="SectionText">\(\([^<]\|<[^/]\|</[^d]\|</d[^i]\|</di[^v]\|</div[^>]\)*\)</div>#\1#g'