Search code examples
regexactionscript-3prefixlookbehind

RegExp in ActionScript 3: How to exclude a complex prefix?


AS3 RegExp engine (and ECMAScript based JavaScript) do not support complex "lookbehind" expressions. (lookahead expressions are fully supported.)

For example:

 (?<=<body>)(.*?)(?=<\/body>)

will work but;

(?<=<body\b[^>]*>)(.*?)(?=<\/body>)

will not work in AS3.

What I need is to match a complex prefix but exclude it in the final match. In the example above; I'm trying to get the body contents in an HTML text but NOT the opening and closing body tags. And the actual test text looks like this:

<body bgcolor="#EEEEEE">
Some content here...
</body>

Solution

  • I think you want var regExp:RegExp = /<body>(.*?)<\/body>/i; as opposed to the 3 groups in your current regexp, so you're only capturing the body tag, you can then reference the match with either \1 or $1 depending on which function you're using:

    http://livedocs.adobe.com/flex/3/html/help.html?content=12_Using_Regular_Expressions_09.html