Преобразование символа в верхний регистр с использованием регулярных выражений (EditPad Pro) - PullRequest
150 голосов
/ 21 июля 2009

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

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

Я написал регулярное выражение select и теперь могу использовать его с обратной ссылкой ($ 1 работает отлично), однако я не могу заменить его на верхний регистр char. Я думал, что-то вроде \ u $ 1 будет работать, но в EditPad Pro это не так.

Если ни один бесплатный инструмент не позволяет мне сделать это, я думаю, что альтернативой было бы просто сделать это в C #, однако я немного тороплюсь и не нахожусь рядом с компилятором, поэтому мне придется скачать экспресс-версию во-первых, так ... Было бы предпочтительнее найти инструмент, поддерживающий такую ​​функцию!

Спасибо!

Ответы [ 5 ]

249 голосов
/ 21 июля 2009

TextPad позволит вам выполнить эту операцию.

пример:

test this sentence

Найти что: \([^ ]*\) \(.*\) Заменить на: \U\1\E \2

\U приведет к тому, что все последующие символы будут верхними

\E отключит \U

результат будет:

TEST this sentence
27 голосов
/ 25 мая 2013

Я знаю, что эта тема о EditPad Pro. Но я пришел сюда из-за необходимости регулярных выражений javascript.

Для людей, которым нужен тот же совет, для регулярного выражения javascript, вы можете использовать функцию в качестве аргумента замены.

Я использую функцию ниже для преобразования имен css с - в эквивалент javascript, например: "border-top" будет преобразован в "borderTop";

s = s.replace(/\-[a-z]/g, function(x){return x[1].toUpperCase();});
26 голосов
/ 26 июня 2010

EditPad Pro и PowerGREP имеют уникальная функция, которая позволяет изменить регистр обратной ссылки. \U1 вставляет первую обратную ссылку в верхнем регистре, \L1 в нижнем регистре и \F1 с первым символом в верхний регистр и остаток в в нижнем регистре. Наконец, \I1 вставляет его с первой буквой каждого слова с большой буквы, а другие буквы в в нижнем регистре.

Источник: Goyvaerts, Jan (2006). Регулярные выражения: полное руководство . Lulu.com. р. 35 . ISBN 1411677609. Google Книги. Получено 25 июня 2010 г.

7 голосов
/ 14 октября 2011

Вы можете сделать это в jEdit, используя опцию «Возвращаемое значение фрагмента BeanShell» в диалоге поиска и замены jEdit. Просто найдите " [a-z]" и замените его на " _0.toUpperCase()" (без кавычек)

5 голосов
/ 05 декабря 2011

Вы также можете использовать заглавные буквы первой буквы совпадения, используя \I1 и \I2 и т. Д. Вместо $1 и $2.

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