我写了这个正则表达式来匹配HTML页面中的所有href
和src
链接; (我知道我应该使用解析器;这只是试验):
/((href|src)\=\").*?\"/
#Without look-behind
它工作正常,但是当我尝试将表达式的第一部分修改为后视模式时:
/(?<=(href|src)\=\").*?\"/
#With look-behind
它会抛出错误,指出“无效的后视模式”。任何想法,看起来有什么问题?
答案 0 :(得分:11)
Lookbehind有restrictions:
(?<=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=").*?"/