正则表达式问题

时间:2011-07-14 02:28:02

标签: html regex

专家

我发誓我上传了很多正则表达式的东西来研究,但我发现正则表达主题对我来说太难理解了。对我有什么好的建议吗?

任何人都可以向我解释为什么<p[^>]*>可以简单地移除开始<p><p attr="">? 我能做什么,如果我想从

做出来的话
<div style="float: left; width: 350px; border: 1px solid #000000;" class="star1">abcdk</div>

到这个

<div class="star1">abcdk</div>

提前致谢。

2 个答案:

答案 0 :(得分:0)

建议:使用regex tester进行游戏以获得与之匹配的内容。

杰森的解释很好,但如果刚开始使用正则表达式,可能还不够深入。我们一次只需<p[^>]*>一件:

  • <对正则表达式引擎没有特殊意义,因此它意味着它只匹配单个<
  • p是相同的:匹配单个p
  • [是一个特殊的角色。正则表达式中的方括号表示“任何这些”。例如,正则表达式[abc]将匹配任何单个字符“a”,“b”或“c”。
  • ^是一个具有两种可能含义的特殊字符。在方括号内,就像在这里一样,这是一个简单的否定。 [abc]匹配任何提到的单个字符,[^abc]将匹配 提及的任何单个字符。
  • >没有特殊含义:只匹配一个>
  • ]现在应该是显而易见的:它关闭了开头[
  • *是一个特殊字符,表示匹配之前的0或更多内容;这意味着它可以匹配任何东西,或者它可以匹配大量的东西,只要它与*之前的匹配。
  • >仍然没有特殊含义,就像之前的
  • 一样

所以我们可以将<p[^>]*>分成三部分,我们可以说它匹配任何一系列字符:

  • <p:以文字<p开头,
  • [^>]*:后跟0个或更多不是>的字符,
  • >:以文字>结尾。

哦,http://www.regular-expressions.info是我在网上找到的最好的正则表达式指南之一。

答案 1 :(得分:0)

<p[^>]*>

<p与除>>结尾的任何字符匹配。在这种情况下,<p>标记包含或不包含属性。

对于<div>标记,您只需修改上面的正则表达式即可。一个简单的例子是:

<div[^>]* class="star1">

对于更灵活的东西(即类属性不必在最后):

<div[^>]*class="star1"[^>]*>

我鼓励您了解有关正则表达式的更多信息。它们是一个非常强大的工具。