我有许多字符串,如
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
...
是否可以使用正则表达式执行此操作?如果是,怎么样?
答案 0 :(得分: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”,只得到参数。
您应该尝试概括该模式,以便它匹配第二个字符串和您拥有的其他字符串。它看起来很疯狂,但现在只有解决方案出现在我脑海中......