Перетворення знаку у верхній регістр за допомогою регулярних виразів (EditPad Pro)


159

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

Передумови: У мене дуже довгий текстовий файл, який використовується додатком, що відрізняється від регістру, і деякі слова починаються з нижнього регістру, а не з верхнього регістру, таким чином, програма завершує роботу. Це може зайняти дуже багато часу вручну, і було б досить складно обійтися без регулярних виразів, оскільки поява (злого) нижнього регістру є дуже специфічним.

Я написав вибірковий регулярний вираз, і тепер я можу використовувати його із зворотним відношенням ($ 1 працює чудово), проте я не можу змусити його замінити верхній регістр. Я думав, що щось на кшталт \ u $ 1 буде працювати, однак це не в EditPad Pro.

Якщо жоден безкоштовний інструмент не дозволяє мені це зробити, я думаю, альтернативою було б просто зробити це в C #, проте я трохи поспішаю і не поруч із компілятором, тому мені доведеться спочатку завантажити експрес-видання, так ... Краще було б знайти інструмент, який підтримує таку функцію!

Дякую!


3
Чи більше це питання підходить Superuser?
georgiecasey

Відповіді:


273

TextPad дозволить вам виконати цю операцію.

приклад:

test this sentence

Знайдіть що: \([^ ]*\) \(.*\) Замініть на:\U\1\E \2

це \Uпризведе до того, що всі наступні символи будуть верхніми

\Eвимкне\U

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

TEST this sentence

13
Чи є спосіб виконати цю операцію в .NET Regex (без використання ToUpper)?
Шиммі Вайцхандлер

34
Також працює в блокноті ++.
Шон

33
\U$1\Eу піднесеному тексті
Qwerty

10
\U\1\Eу Vim
J. Katzwinkel

6
Працює і в PHPStorm. Однак у мене була протилежна вимога. Мені довелося замінити всі великі величини атрибутів у верхньому регістрі (від, мабуть, 90-х HTML) на малі регістри. Використання \L$1\Eпрацював.
Еяз

30

Я знаю, що ця тема стосується EditPad Pro, але я прийшов сюди, тому що у мене була така ж потреба з jage regexp.

Для людей, які тут потребують тієї ж підказки, ви можете використовувати функцію або лямбда як аргумент заміни.

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

    s = s.replace(/\-[a-z]/g, x => x[1].toUpperCase());

26

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

Джерело: Гойваерц, січень (2006). Регулярні вирази: Повний підручник . Lulu.com. p. 35 . ISBN 1411677609. Google Книги. Отримано 25 червня 2010 року.


6

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


1
Ваша відповідь насправді не пов’язана з початковим запитанням, але я знайшов її під час гуглінгу і був саме тим, що шукав. Дивовижне, дякую!
adietisheim

5

Ви також можете використовувати великі літери матчу, використовуючи \I1і \I2т. П. Замість $1і $2.


1

Просто черговий приклад сценарію для Notepad ++ (звичайний режим пошуку виразів)

Find: (g|c|u|d)(et|reate|pdate|elete)_(.)([^\s (]+)
Replace: \U\1\E$2\U\3\E$4

Приклад:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.