Як я можу використовувати регулярний вираз для заміни великих регістрів на малі регістри в Intellij IDEA?


92

Я погуглив це і з’ясував, як робити з іншими парсерами регулярних виразів:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Я спробував це, і жодна з них не працює. Як приклад, я хочу використовувати регулярний вираз, щоб змінити це:

private String Name;
private Integer Bar = 2;

До цього:

private String name;
private Integer bar = 2;

Я спробував щось подібне:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Жоден з них не працює. Чи можна це зробити в intellij, чи це відсутня функція? Це лише для навчальних цілей, і приклад надуманий. Я просто хочу знати, чи можливо це зробити в intellij.


3
Чи є причина, по якій ви хочете використовувати регулярний вираз? IntelliJ дійсно має ярлик для цього.
ajp15243

@ ajp15243 Це лише для навчальних цілей, а приклад надуманий. Я буквально хочу знати, чи можливо це зробити в intellij.
Даніель Каплан

3
Досить справедливо! Просто хотів переконатися. Я знайшов посилання на синтаксис IntelliJ Regex , і в коментарях хтось хоче поставити те саме питання, що і ви. Модератор відповів (і, я думаю, трохи не зрозумів), але відповідь вказує, що це неможливо із синтаксисом регулярних виразів IntelliJ.
ajp15243

Ви завжди можете написати плагін для цього.
Мео

1
@tieTYT gaoagong досить гарний, я дам йому це :).
ajp15243

Відповіді:


174

В IDEA 15 ви можете використовувати перемикачі нижче, щоб перемикати регістр захоплених виразів. Зараз це офіційно задокументовано з моменту випуску цієї версії.

  • \l: нижній регістр наступного символу
  • \u: угорі регістр одного наступного символу
  • \L: зменшити регістр наступних символів до \Eабо до кінця рядка заміни
  • \U: угорі регістр наступних символів до \Eабо до кінця рядка заміни
  • \E: позначити кінець зміни справи, ініційованої \Uабо\L

Ось приклад використання (оскільки документація незрозуміла):

знайти: (\ w + _) + (\ w +) замінити: \ L $ 1 $ 2 \ E

Вищевказане буде конвертовано FOO_BAR_BAZу foo_bar_bazтощо. $ 1 відноситься до першої знайденої групи захоплення (у дужках), $ 2 до другого набору тощо.

Для нащадків: про це спочатку повідомив @gaoagong і задокументував там .


13

Шукав відповідь, а потім зрозумів, що @ ajp15243 вже відповів на це вище. В даний час в Intellij немає можливості використовувати їх функцію заміни регулярних виразів, щоб змінити регістр листа. На цій URL-адресі коротко обговорюється функція.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Ви також можете проголосувати за функцію у випуску Youtrack тут:

http://youtrack.jetbrains.com/issue/IDEA-70451

Існує плагін Intellij регулярного виразу, але на жаль він також не підтримує нижній і верхній кожух.

http://plugins.jetbrains.com/plugin/19?pr=idea

Можливо, вам просто доведеться запустити файли через програму perl, щоб правильно їх замінити.


1
Відповідно до youtrack, це додається до версії 15 IntelliJ
Кевін Шихан,

6

Я почав використовувати плагін Idea Vim і навчився робити подібні речі у Vim. Таким чином я міг би повторно використовувати ці навички поза ідеєю.

Ось команда vim, щоб зробити те, про що ви просили.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Введення регулярного виразу в IDE. Додаткові скісні риски потрібні, щоб уникнути шаблону регулярного виразу у Vim.

В рамках IDE

Знайдіть плагін з IDE. введіть тут опис зображення


2
Величезне обхідне рішення, яке, ймовірно, не допоможе 99% людей тут, оскільки вони не захочуть використовувати емуляцію VIM. Але, випадково, у мене вже встановлений цей плагін, тому він працює для мене :)
Даніель Каплан

1
Я знаю .. Ві та Вім на початку здаються злом марним для тих, хто використовує IDE. Зрештою я почав вивчати Vi після зустрічі з усіма ними на серверах. Мені це подобається зараз, коли мені не доводиться змінювати мислення, коли я пересуваюся між інструментами.
chinto

Я тільки починаю з цього, ще не вільно. Чи вважаєте ви, що ви ефективніше редагуєте в Intellij-IDEA за допомогою IDEAVim, ніж раніше, ніж ви використовували Vi?
Даніель Каплан,

1
Все більше і більше .. Раніше мені було добре з затемненням. Потім перейшов до Intellij і навчився більшості прийомів. Тоді зрозумів, що вивчення Vim могло б зробити мене відразу в сервері та на робочій станції. Я також бачу, що Vim набагато потужніший у маніпулюванні текстом та навігації. Я все ще використовую ярлики IDE для всіх спеціальностей IDE, таких як рефакторинг та пошук посилань, і переходжу до def тощо. Хоча дуже перемикатися між режимами.
chinto

1
Це відмінне рішення для людей, які знають, як користуватися vi. Я вмикаю IdeaVim, коли мені потрібно зробити складні заміни, а потім знову відключаюся, щоб насолоджуватися власними функціями редактора Idea. Хотілося б, щоб у IdeaVim був індикатор, який показував, коли він активний.
LS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.