10

我编写了这个正则表达式来匹配 HTML 页面中的所有href链接src;(我知道我应该使用解析器;这只是试验):

/((href|src)\=\").*?\"/#没有后视

它工作正常,但是当我尝试将表达式的第一部分修改为后视模式时:

/(?<=(href|src)\=\").*?\"/#带后视

它会抛出一个错误,指出“无效的后视模式”。任何想法,后视有什么问题?

4

1 回答 1

19

Lookbehind 有限制

   (?<=subexp)        look-behind
   (?<!subexp)        negative look-behind

                      Subexp of look-behind must be fixed character length.
                      But different character length is allowed in top level
                      alternatives only.
                      ex. (?<=a|bc) is OK. (?<=aaa(?:b|cd)) is not allowed.

                      In negative-look-behind, captured group isn't allowed, 
                      but shy group(?:) is allowed.

您不能将替代方案放在(负面)回顾中的非顶级。

把它们放在顶层。您也不需要转义您所做的某些字符。

/(?<=href="|src=").*?"/
于 2013-11-13T07:23:43.103 回答