AS3正则表达式和File.separator

时间:2015-05-18 22:20:50

标签: regex actionscript-3

我在Windows机器上,我正在寻找一种方法来使用Regex来计算路径中File.separator字符的出现次数。下面是我的代码,每次输出0。

    var dummyPath:String = "C:" + File.separator + "A" + File.separator + "B.jpg";
    var pattern:RegExp = new RegExp(File.separator,"g");
    trace(dummyPath.match(pattern).length);
    //Outputs 0

我不确定还能做什么。

2 个答案:

答案 0 :(得分:2)

我不会在这样的情况下使用正则表达式,只是因为它们比通常的字符串操作更加混乱(并且我认为效率低得多),而你并没有这样做这里的任何东西都很复杂,足以弥补差异。

在这种情况下,我会这样做:

var dummyPath:String = "C:" + File.separator + "A" + File.separator + "B.jpg";
trace(dummyPath.split(File.separator).length - 1);

至于您遇到的问题,请记住操作系统的文件分隔符通常是/\。你说你在Windows上运行它。这意味着你将"\"传递给正则表达式的构造函数。 \用于在正则表达式中开始转义序列,就像在字符串中使用它一样。

所以基本上你没有描述在Windows机器上查找"\"实例的正则表达式;你正在描述一个启动转义序列并且没有完成的正则表达式。因此,要在这种情况下使用正则表达式,您需要使用另一个\转义\

// This is technically untested, but the principle is the same.
var pattern:RegExp = new RegExp(File.separator.replace("\\", "\\\\"), "g");

答案 1 :(得分:2)

它不匹配,因为您使用的文件分隔符是元字符 逃脱\

正则表达式引擎期望转义用作文字的元文件。

尝试\\,这将是" \\\\"作为双引号字符串。

如果遇到正斜杠分隔符,也可以逃避它,不会造成伤害。

因此,将变量与转义连接为字符串Sep =" \\" + 9月;什么的。