2014-01-14 9 views
0

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

Мне нужно обрезать файл по 95 символов для каждой строки. Каждая строка имеет буквенно-цифровые символы и пробелы. У меня есть возможность ввести соответствующее выражение и замещающее выражение. Я ожидаю, что я сделаю заменяющее выражение ни ничто, ни \r\n.

Что я могу использовать для моего соответствия, чтобы выбрать все после первых 95 символов?

+0

Знаете ли вы, что регулярные выражения функции в инструменте? Вы упомянули, что не думаете, что у вас есть доступ к группам захвата, что, кстати, довольно простая функция ... Может быть, инструмент может справиться с этим, и вы не знаете об этом? – Jerry

+0

@ Jerry это, безусловно, возможно ... это самодельный инструмент для передачи файлов, который добавил некоторые рудиментарные функции преобразования ... один из наших поставщиков требует, чтобы строки были ровно 95 символов. Я могу добавить 95 пробелов в каждую строку довольно легко, но соскабливание избытка не так просто. –

+0

Ну, тогда попробуйте предложения Мэтта. Обычно вы можете получить доступ к группам захвата с помощью '$ 1' или' \ 1' (для первой группы захвата). – Jerry

ответ

5

Вы могли бы просто использовать подстроку, чтобы сократить до строк, но если вы хотите регулярное выражение, а затем что-то вроде:

^.{,95} 

будет соответствовать первому 95 (или меньше, если строка короче) символов на строку , Замените . чем-нибудь другим, если вы хотите ограничить, какие типы символов он будет соответствовать.

Чтобы получить символы после первого 95, вы могли бы сделать что-то вроде:

^.{,95}(.*) 

Теперь лишние символы будут в улавливающей группе.

Используя вид сзади вы могли бы сделать что-то вроде:

(?<=.{95})(.*) 

которые будут соответствовать только строки, которые являются более 95 символов.

+0

У меня действительно нет доступа к группе захвата, я не думаю. Есть ли выражение, которое означает «все, что не в первых 95 символах», не прибегая к группам захвата? –

+0

@JeremyHolovacs: Конечно, у вас есть доступ к группе захвата. Это глупо. Но если вы не хотите их использовать, вы можете использовать * look позади * –

+0

Вы были правы, я переусердствовал. Спасибо за вашу помощь. –

Смежные вопросы