Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript中使用RegExp进行字符串解析_Regex_Actionscript - Fatal编程技术网

Actionscript中使用RegExp进行字符串解析

Actionscript中使用RegExp进行字符串解析,regex,actionscript,Regex,Actionscript,我有一个类似于路径的字符串,但我尝试了一些应该解析路径的正则表达式模式,但它们不太管用 这是绳子 f|MyApparel/Templates/Events/ 我需要斜线之间的“名称部分” 我尝试了(\w+),但数组返回[0]=“f”和[1]=“f” 我在上测试了该模式,它似乎工作正常 以下是AS代码: var pattern : RegExp = /(\w+)/g; var hierarchy : Array = pattern.exec(params.category_id); params.

我有一个类似于路径的字符串,但我尝试了一些应该解析路径的正则表达式模式,但它们不太管用

这是绳子

f|MyApparel/Templates/Events/

我需要斜线之间的“名称部分”

我尝试了
(\w+
),但数组返回
[0]=“f”
[1]=“f”

我在上测试了该模式,它似乎工作正常

以下是AS代码:

var pattern : RegExp = /(\w+)/g;
var hierarchy : Array = pattern.exec(params.category_id);
params.name = hierarchy.pop() as String;

我不知道你想要哪两条斜线,但试试看

var hierarchy : Array = params.category_id.split(/[\/|]/);

[\/|]
表示斜线或竖线

我不知道你想要哪两条斜线,但试试看

var hierarchy : Array = params.category_id.split(/[\/|]/);
[\/|]
表示斜线或竖线

pattern.exec()
的工作原理类似于JavaScript。每次找到全局正则表达式的匹配项时,它都会重置
lastIndex
属性,下次运行它时,它将从那里开始

因此,它不会返回所有匹配项的数组,而只返回字符串中的下一个匹配项。因此,必须在循环中运行它,直到它返回
null

var myPattern:RegExp = /(\w+)/g;  
var str:String = "f|MyApparel/Templates/Events/";

var result:Object = myPattern.exec(str);
while (result != null) {
  trace( result.index, "\t", result);
  result = myPattern.exec(str);
}
pattern.exec()。每次找到全局正则表达式的匹配项时,它都会重置
lastIndex
属性,下次运行它时,它将从那里开始

因此,它不会返回所有匹配项的数组,而只返回字符串中的下一个匹配项。因此,必须在循环中运行它,直到它返回
null

var myPattern:RegExp = /(\w+)/g;  
var str:String = "f|MyApparel/Templates/Events/";

var result:Object = myPattern.exec(str);
while (result != null) {
  trace( result.index, "\t", result);
  result = myPattern.exec(str);
}

+1-纠正必须循环的错误。但是,我想补充一点,使用split而不是RegExp更好地解决这个问题。使用
split()。问题中普遍存在的误解是关于
pattern.exec()
是如何工作的,这正是我想要纠正的。+1-纠正关于必须循环的错误。但是,我想补充一点,使用split而不是RegExp更好地解决这个问题。使用
split()。问题中普遍存在的误解是关于
pattern.exec()
是如何工作的,这正是我想要纠正的。+1。虽然@Tomalak回答了OPs关于使用RegExp的问题,但我认为这是一个更好的解决方案。。。实际上仍然使用RegExp.)+1.虽然@Tomalak回答了OPs关于使用RegExp的问题,但我认为这是一个更好的解决方案。。。实际上仍然使用RegExp.)