Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式发出匹配的HTML标记_Html_Regex_Linux_Bash_Sed - Fatal编程技术网

正则表达式发出匹配的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

所以我尝试使用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.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'