正则表达式 - 递归模式

时间:2013-07-17 00:25:33

标签: c# regex recursion

我有一个字符串,其格式相同:

../assets/
../../assets/
../../../assets/

我正在使用正则表达式来查找../模式:

(\.\./)

我的目的是将所有../替换为root/,并且上面的所有字符串都将变为root/assets/

有没有办法用regex的某种递归模式做到这一点?


更新

我正在使用C#

string content1 = "../assets";
string content2 = "../../assets";
string content3 = "../../../assets";
string pattern1 = "(\.\./)";
string pattern2 = "(\.\./\.\./)";
string pattern3 = "(\.\./\.\./\.\./)";

// All the result is "root/assets"
content1 = Regex.Replace(content1, pattern1, "root/");
content2 = Regex.Replace(content2, pattern2, "root/");
content3 = Regex.Replace(content3, pattern3, "root/");

1 个答案:

答案 0 :(得分:2)

不需要递归,你可以s#(\.\./)+#root/#g(你没有指定哪种语言,所以这是Ruby / Perl版本):找到任意数量的重复../并用{替换整个事物{1}}。

相关问题