0

AS3 RegExp エンジン (および ECMAScript ベースの JavaScript) は、複雑な「後読み」式をサポートしていません。(先読み式は完全にサポートされています。)

例えば:

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

動作しますが;

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

AS3 では機能しません。

私が必要とするのは、複雑なプレフィックスに一致するが、最終的な一致では除外することです。上記の例では; HTMLテキストで本文の内容を取得しようとしていますが、本文の開始タグと終了タグは取得していません。実際のテスト テキストは次のようになります。

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

3 に答える 3

0

var regExp:RegExp = /<body>(.*?)<\/body>/i;現在の正規表現の3つのグループとは対照的に、bodyタグのみをキャプチャしているので、使用している関数に応じて\1または$1のいずれかで一致を参照できます。

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

于 2009-05-23T00:38:33.913 に答える
0

quoo のおかげです。問題はすぐに解決されます..

var re:RegExp = new RegExp(/(<body\b[^>]*>)(.*?)(<\/body>)/gis); }
return strHTML.replace(re, "$2");

これにより、body タグのないコンテンツのみが返されます。後読みや先読みについて心配する必要はありません。

皆様のおかげで..

于 2009-05-23T01:12:44.280 に答える
0

これは私の JavaScript RegExp の経験から来ていますが、比較的似ているはずです...

後読みは必要ないと思います。非キャプチャ グループが必要なだけです。それらは引き続き入力に一致しますが、一致によってキャプチャされません。

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

一致を行うと、返される一致にはコンテンツのみが含まれます (ボディの開始/終了タグは含まれません)。

于 2009-05-23T00:23:48.403 に答える