这个正则表达式是如何工作的,如何让它重复5次?

时间:2009-04-15 07:33:03

标签: regex

这个正则表达式做了什么?我知道它取代了文件名(但不是扩展名)

    Regex r = new Regex("(?<!\\.[0-9a-z]*)[0-9]");
    return r.Replace(sz, "#");

如何让它重复5次?让它转换 “1111111111.000”至“11111 #####。000”?

3 个答案:

答案 0 :(得分:2)

我还没试过这个,但 尝试过,工作:如何更改常规模式以使用正向前瞻?这样,它应该工作:

[0-9a-z](?=[0-9a-z]{0,4}\.)

基本上,这会找到任何(字母数字)字符,后跟最多四个其他字母数字字符和一个句点。这可能只是连续匹配期间前面的最后五个字符。但它的效率低得离谱,它只适用于允许可变宽度超前模式的引擎。

答案 1 :(得分:0)

尝试将结束括号后的星号更改为“{5}”(无引号)。这取决于您的正则表达式环境的功能集,但这是一种常见的语法。

答案 2 :(得分:0)

正则表达式匹配一个字符(0到9),该字符前面没有点,然后是0到9或a到z的任何数字。

替换线负责多次更换。所以你想使用具有extra parameter count的Replace方法。

所以代码看起来像:

 Regex r = new Regex("(?<!\\.[0-9a-z]*)[0-9]");
 return r.Replace(sz, "#", 5);