Как работает это регулярное выражение и как я могу заставить его повторяться только 5 раз? - PullRequest
1 голос
/ 15 апреля 2009

Что делает это регулярное выражение? я знаю, что он заменяет имя файла (но не расширение)

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

Как мне сделать это только 5 раз? чтобы это преобразовать "1111111111.000" - "11111 #####. 000"?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2009

Я не пробовал это, но Пробовал ли , работает : как насчет изменения общего паттерна для использования вместо этого позитивного взгляда? Таким образом, оно должно работать:

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

В основном, это находит любой (буквенно-цифровой) символ, за которым следуют до четырех других буквенно-цифровых символов и точку. Это может просто работать, чтобы соответствовать последним пяти символам перед периодом подряд. Это адски неэффективно, и работает только с механизмами, которые допускают паттерны прогнозируемой переменной ширины.

0 голосов
/ 15 апреля 2009

Регулярному выражению соответствует символ (от 0 до 9), которому не предшествует точка, затем любое число от 0 до 9 или от a до z.

Линия замены отвечает за множественные замены. Поэтому вы хотите использовать метод Replace, который имеет дополнительный параметр count .

так код будет выглядеть так:

 Regex r = new Regex("(?<!\\.[0-9a-z]*)[0-9]");
 return r.Replace(sz, "#", 5);
0 голосов
/ 15 апреля 2009

Попробуйте изменить звездочку после закрывающей скобки на "{5}" (без кавычек). Это немного зависит от набора функций вашей среды регулярных выражений, но это общий синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...