2

AS3 には、次のようなインライン AS3 正規表現構文で定義された正規表現がいくつかあります。

  • /\/\*[\s\S]*?\*\//gm

それを次のような AS3 RegEx クラス コンストラクターに変換したいと思います。

  • new RegExp('/\/\*[\s\S]*?\*\//', "gm")

バックスラッシュをエスケープする必要があるかどうかはわかりません。変換する方法を知っていますか?


    /**  ------------------------- Regular Expressions ---------------------------- */

    public static var multiLineCComments:RegExp     = /\/\*[\s\S]*?\*\//gm;
    public static var singleLineCComments:RegExp        = /\/\/.*$/gm;
    public static var singleLinePerlComments:RegExp = /#.*$/gm;
    public static var doubleQuotedString:RegExp     = /"([^\\"\n]|\\.)*"/g;
    public static var singleQuotedString:RegExp     = /'([^\\'\n]|\\.)*'/g;
    public static var multiLineDoubleQuotedString:XRegExp   = new XRegExp('"([^\\\\"]|\\\\.)*"', 'gs');
    public static var multiLineSingleQuotedString:XRegExp   = new XRegExp("'([^\\\\']|\\\\.)*'", 'gs');
    public static var xmlComments:RegExp                = /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm;
    public static var url:RegExp                        = /\w+:\/\/[\w-.\/?%&=:@;]*/g;
4

2 に答える 2

1

私はそれを行う方法を理解しました。

  1. /AS3正規表現構文の一部である最初と最後を削除します。

  2. gまたはなどの終了オプションをgm2番目の引数に配置します。

  3. 最後に、すべての円記号(\)を2つの円記号に置き換えてエスケープします

要約すると:

  • インライン構文:/\/\*[\s\S]*?\*\//gm
  • RegExp構文:new RegExp ("\\/\\*[\\s\\S]*?\\*\\/", 'gm')
于 2012-08-28T12:04:30.730 に答える
0

これは別の方法で行うことができます。

private static const pattern:RegExp = /\/\*[\s\S]*?\*\//;
public static var regex:XRegExp = new XRegExp(pattern.source, "gm");
于 2012-08-28T12:04:19.933 に答える