-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

我认为您可以使用正则表达式组和 javascript String.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,”除以“,”来仅获取参数。

您应该尝试概括该模式,以便它匹配第二个字符串和您拥有的其他字符串。它看起来有点疯狂,但这是我现在想到的唯一解决方案......

于 2012-07-20T18:16:50.237 回答