大卫,原因(< span [^>] *>)>是你有一个小错字.
你看,该表达式试图匹配两个结束>:仔细看看结束>)>.例如,它匹配< span hey there>>但不是&span; span hey there>
要匹配开头范围,请确保只有一个>.
关于使用正则表达式匹配html的所有免责声明,这个正则表达式将:
]*>
如果您有时期望SPAN,请确保使其不区分大小写.
只有你有时间:一个额外的蓬勃发展
在评论中,@ David Ehrmann指出上面的正则表达式将匹配< spanner>.如果你想让他开心并确保如果跨度不仅仅是< span>它总是在span之后包含一个空格,你可以使用:
]*)?>
但是,在我看来,这是一种不必要的繁荣.当我们用正则表达式解析html时,我们总是知道我们正在使用粗糙的工具,并且我们依赖于输入相当完善.例如,通过上面修订的正则表达式,我们仍然有一百万种方法可以匹配不正确的html,例如:< span classification>
该怎么办?没有.了解您的工具,了解他们可以做什么,了解风险,并确定情况何时需要正则表达式以及何时保证DOM解析器.