AS3 RegExp引擎(以及基于ECMAScript的JavaScript)不支持复杂“lookbehind”表达式。 (完全支持前瞻表达。)
例如:
(?<=<body>)(.*?)(?=<\/body>)
会工作但是;
(?<=<body\b[^>]*>)(.*?)(?=<\/body>)
在AS3中不起作用。
我需要的是匹配复杂前缀但在最终匹配中将其排除。 在上面的例子中;我试图在HTML文本中获取正文内容,但不是打开和关闭正文标记。实际测试文本如下所示:
<body bgcolor="#EEEEEE">
Some content here...
</body>
答案 0 :(得分:0)
这来自我的JavaScript RegExp经验,但它应该相对类似......
我认为你不需要后视,你只需要非捕获组。它们仍匹配输入,但匹配不会捕获它们:
(?:<body\b[^>]*>)(.*?)(?:<\/body>)
当您进行匹配时,返回的匹配将仅包含内容(但不包括正文开始/结束标记)。
答案 1 :(得分:0)
我认为您需要var regExp:RegExp = /<body>(.*?)<\/body>/i;
而不是当前正则表达式中的3个组,所以您只捕获正文标记,然后您可以使用\ 1或$ 1引用匹配,具体取决于您使用哪个函数'正在使用:
http://livedocs.adobe.com/flex/3/html/help.html?content=12_Using_Regular_Expressions_09.html
答案 2 :(得分:0)
感谢quoo;问题很快得到解决..
var re:RegExp = new RegExp(/(<body\b[^>]*>)(.*?)(<\/body>)/gis); }
return strHTML.replace(re, "$2");
仅返回没有body标签的内容。 无需担心外观和/或前瞻......
谢谢大家..