为什么我的正则表达式中的后向引用不起作用?

时间:2012-03-27 20:50:29

标签: regex backreference

我写了一个正则表达式试图匹配一些HTML代码,但我不能完全工作。我在“wp-caption”之后遇到了问题。

class=(["\'])(?:[\w\s])*?wp-caption[\s\1]

我想要匹配的代码:

class="wp-caption"
class='wp-caption'
class="wp-caption foo"
class="foo wp-caption"

我匹配前三个结果但不匹配第四个结果。我不认为\ 1正在发挥作用。有什么想法吗?

BTdubs我一直在使用http://regexpal.com/进行测试。

3 个答案:

答案 0 :(得分:1)

这可能也有用

class\s*=\s*(['"])(?:(?!\1).)*wp-caption(?:(?!\1).)*\1

答案 1 :(得分:0)

class=(["\'])(?:[\w\s])*wp-caption[\w\s]*\1

答案 2 :(得分:0)

它不起作用,因为无法在字符类(方括号[]内的内容)中引用反向引用。正如另一个答案中所提到的,你可以在前瞻中使用反向反射,除非你使用的是不支持外观的语言......

简而言之,您需要做的事情取决于您使用的语言(正则表达式实现在很大程度上取决于实现它们的语言)。