正则表达式:仅当字符串不是标签的一部分时才匹配字符串
我只尝试匹配不属于 html 标签一部分的字符串。
例如,搜索字符串时:“abc”。 abc def
应该匹配 <代码>
foo bar foo abc foo bar
应该匹配,但是 foo
不应匹配。
感谢您的帮助!
I am trying to match a string only if it is not part of an html tag.
For example when searching for the string: "abc".<a href="foo.html">abc def</a>
should match<p> foo bar foo abc foo bar</p>
should match
but<a href="abc.html">foo</a>
should not match.
Thanks for the help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我真的不会使用正则表达式来匹配 HTML,因为 HTML 不是常规的,而且有大量的边缘情况会让你陷入困境。对于除最简单情况之外的所有情况,我都会使用 HTML 解析器(例如 这个 对于 PHP)。
I really wouldn't use regexps to match HTML, since HTML isn't regular and there are a load of edge cases to trip you up. For all but the simplest cases I'd use an HTML parser (e.g. this one for PHP).
Brian 说得有道理,无论如何,如果你想使用正则表达式,那么它适合你的输入:
Brian has got a point, anyway, if you wish to use a regex, that one suits you inputs:
我非常确信任何正则表达式都会在某些 CDATA 部分上崩溃。
I'm quite convinced that any regex is going to break on some CDATA sections.
您正在寻找的是 DOM 解析器。这将删除所有 HTML 并为您提供正在检查的页面的纯文本,然后您可以对其进行匹配。不确定你的用例是什么,但我不假设你没有操作 DOM,否则你会使用 JavaScript。
如果您只是提取信息,请使用 简单 HTML DOM 解析器 解析页面,然后匹配对比你可以从解析的对象中获得的纯文本。
What you're looking for is a DOM parser. That will strip out all the HTML and provide you the plain text of the page you're examining, which you can then match on. Not sure what your use case is, but I'm not assuming you're not manipulating the DOM, or else you'd be using JavaScript.
If you're just extracting information, parse the page using something like The Simple HTML DOM Parser, and then match against the plain text you can get from the parsed object.
虽然我也同意 Brian 的 评论,我经常用正则表达式进行快速而肮脏的解析,对于你的情况,我' d 使用这样的东西:
<
开头的行剩下的只是文本(可能还有很多空白)。尽管这不是关于正则表达式,而是更多关于搜索和替换。
While I too agree with Brian's comment, i often do quick and dirty parsing with regular expressions, and for your case, i'd use something like this:
<
What you're left with is just the text (and possibly a lot of white-space). Though this is less about regular expressions and more about search and replace.