如何在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 2014年

@ ajp15243这只是出于教育目的,该示例是人为设计的。我真的想知道在intellij中是否可以做到这一点。
Daniel Kaplan 2014年

3
很公平!只是想确定一下。我找到了IntelliJ Regex语法参考,在评论中,有人希望问与您相同的问题。主持人回答了(我认为有点误解了),但是答案表明,使用IntelliJ的regex语法是不可能的。
ajp15243 2014年

您总是可以为此编写一个插件。
Meo 2014年

1
@tieTYT gaoagong的很好,我让他吃:)。
ajp15243 2014年

Answers:


174

在IDEA 15中,您可以使用以下开关来切换捕获的表达式的大小写。自该版本发布以来,现在已正式记录下来

  • \l:小写下一个字符的大小写
  • \u:关于下一个字符的情况
  • \L:降低下一个字符的大小写,直到\E替换字符串的a 或结尾
  • \U:接下来的字符的大小写,直到\E替换字符串的a 或结尾
  • \E:标记由\U或发起的案例更改结束\L

这是一个用法示例(由于文档不清晰):

找到:(\ w + _)+(\ w +)替换:\ L $ 1 $ 2 \ E

上面的将转换FOO_BAR_BAZfoo_bar_bazetc $ 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

有一个regex Intellij插件,但可惜它也不支持上下外壳。

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

您可能只需要通过perl程序运行文件即可正确替换它们。


1
根据youtrack的说法,这已添加到IntelliJ版本15中
Kevin Sheehan

6

我开始使用Idea Vim插件,并学习在Vim中做类似的事情。这样,我可以在Idea之外重用这些技能。

这是vim命令,可以执行您要求的操作。

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

正则表达式在IDE中输入。要使正则表达式转义到Vim中,需要使用额外的斜杠。

在IDE中

在IDE中找到插件。 在此处输入图片说明


2
巨大的变通办法可能不会对此处的99%的人有所帮助,因为他们不想使用VIM仿真。但是,我碰巧已经安装了此插件,因此它对我有用:)
Daniel Kaplan

1
我知道。Vi和Vim对于使用IDE的任何人一开始似乎都是邪恶的。在服务器中遇到所有Vi之后,我最终开始学习Vi。我现在有点喜欢它,因为我在工具之间移动时不必切换思维方式。
chinto 2015年

我才刚刚开始,还不太流利。您是否认为使用IDEAVim在Intellij-IDEA中进行编辑比使用Vi之前进行的生产力更高?
丹尼尔·卡普兰

1
越来越多..我以前对日食很满意。然后转移到Intellij并学习了大多数技巧。然后意识到学习Vim将使我立即在Server and Workstation中变得很好。我还看到Vim在文本操作和导航方面功能更强大。我仍然对所有IDE专业使用IDE快捷方式,例如重构和查找引用以及转至def等。不过,在模式之间进行切换非常重要。
chinto 2015年

1
对于知道如何使用vi的人来说,这是一个极好的解决方案。当我需要进行复杂的替换时,我打开IdeaVim,然后再次退出以使用Idea自己的编辑器功能。我希望IdeaVim有一个指示器可以显示它何时处于活动状态。
LS 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.