-3

私はのような多くの文字列を持っています

blip createBlip ( float x, float y, float z, [int icon=0, int size=2, int r=255, int g=0, int b=0, int a=255, int ordering=0, float visibleDistance=99999.0, visibleTo = getRootElement()] )

float float float getElementRotation ( element theElement [, string rotOrder = "default" ] )

この文字列の一部を取得する必要があります

array(
[1] = blip
[2] = createBlip
[3] = x
[4] = y
[5] = z
)

array(
[1] = blip createBlip
[2] = float x
[3] = float y
[4] = float z
[5] = int icon=0
[6] = int size=2
[7] = int r=255

..。

正規表現でこれを行うことは可能ですか?はいの場合、どのように?

4

1 に答える 1

1

正規表現グループとjavascriptString.match()メソッドでそれを行うことができると思います。たとえば(最初の文字列):

var string = "blip createBlip ( float x, float y, float z, [int icon=0, int size=2, int r=255, int g=0, int b=0, int a=255, int ordering=0, float visibleDistance=99999.0, visibleTo = getRootElement()] )";

var result = string.match(/((?:(?:\w+)\s?)+?)\(?\[?((?:(?:(?:(?:\s?\w+)+))\,)+)\s?\[((?:(?:(?:\s?=?\.?\(?\)?\w?)+)\,?)+)\]\s?\)/);

結果は配列になります:

["blip createBlip ( float x, float y, float z, [int icon=0, int size=2, int r=255, int g=0, int b=0, int a=255, int ordering=0, float visibleDistance=99999.0, visibleTo = getRootElement()] )", "blip", "createBlip", " float x, float y, float z,", "int icon=0, int size=2, int r=255, int g=0, int b=0, int a=255, int ordering=0, float visibleDistance=99999.0, visibleTo = getRootElement()"]

現在、result [0]には完全一致が含まれていますが、result [1] .. result [n](n-キャプチャグループの数)には、()および[]括弧内にパラメーターを持つ文字列が含まれています。これで、「float x、float y、float z」を「、」で分割して、パラメータのみを取得できます。

そのパターンを一般化して、2番目の文字列や他の文字列と一致するようにする必要があります。少しおかしなことに見えますが、今頭に浮かぶのは解決策だけです...

于 2012-07-20T18:16:50.237 に答える