如何使用正则表达式在 Intellij IDEA 中用小写替换大写?

Posted

技术标签:

【中文标题】如何使用正则表达式在 Intellij IDEA 中用小写替换大写?【英文标题】:How can I use a regex to replace upper case with lower case in Intellij IDEA? 【发布时间】:2014-07-31 17:56:17 【问题描述】:

我已经用谷歌搜索过了,发现如何使用其他正则表达式解析器:

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 中做到。

【问题讨论】:

您是否有理由要使用正则表达式? IntelliJ 确实有 a hotkey shortcut 这样做。 @ajp15243 这仅用于教育目的,示例是人为设计的。我真的想知道这是否可以在 intellij 中做到。 很公平!只是想确定一下。我找到了IntelliJ Regex Syntax reference,在 cmets 中,有人看起来和你问了同样的问题。版主回答(我认为有点误解),但答案表明这对于 IntelliJ 的正则表达式语法是不可能的。 你总是可以为此编写一个插件。 【参考方案1】:

在 IDEA 15 中,您可以使用以下开关来切换捕获表达式的大小写。自此版本发布以来,现在是 officially documented。

\l: 小写下一个字符 \u: 上一个字符的大小写 \L:将下一个字符的大小写小写,直到 \E 或替换字符串的结尾 \U:将下一个字符的大小写向上直到 \E 或替换字符串的结尾 \E:标记由\U\L 发起的案例更改的结束

这是一个示例用法(因为文档不清楚):

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

以上内容会将FOO_BAR_BAZ 转换为foo_bar_baz 等 $1 指的是第一个找到的捕获组(在括号中),$2 指的是第二组,等等。

为了子孙后代:这最初是 @gaogong 的 reported 并记录在 there。

【讨论】:

对于在 phpStorm 中搜索解决方案时可能会登陆这里的人来说,这还行不通。不过,我已经开了一张票以获得 PHPStorm 的支持。【参考方案2】:

搜索了答案,然后发现@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 程序运行文件即可正确替换它们。

【讨论】:

根据 youtrack 的说法,这是在 IntelliJ 15 版中添加的【参考方案3】:

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

这是执行您要求的 vim 命令。

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

在 IDE 中输入正则表达式。需要额外的斜线将正则表达式模式转义到 Vim 中。

从 IDE 中查找插件。

【讨论】:

巨大的变通方法可能对这里 99% 的人没有帮助,因为他们不想使用 VIM 仿真。但是,我碰巧已经安装了这个插件,所以它对我有用:) 我知道.. 对于任何使用 IDE 的人来说,一开始 Vi 和 Vim 似乎都是无用的。在服务器中遇到所有 Vi 后,我最终开始学习 Vi。我现在有点喜欢它,因为我在工具之间移动时不必转换思维方式。 我才刚开始,还不流利。您是否认为使用 IDEAVim 在 Intellij-IDEA 中进行编辑比使用 Vi 之前更有效率? 越来越多..我以前对eclipse很擅长。然后搬到 Intellij 并学习了它的大部分技巧。然后意识到学习 Vim 会让我同时在服务器和工作站上表现出色。我还看到 Vim 在文本操作和导航方面要强大得多。我仍然使用 IDE 快捷方式来处理所有 IDE 专业,例如重构和查找引用以及转到 def 等。不过,在模式之间切换非常方便。 对于知道如何使用 vi 的人来说,这是一个很好的解决方案。当我需要进行复杂的替换时,我会打开 IdeaVim,然后再次退出以享受 Idea 自己的编辑器功能。不过,我希望 IdeaVim 有一个指示器来显示它何时处于活动状态。

以上是关于如何使用正则表达式在 Intellij IDEA 中用小写替换大写?的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA删除代码的注释

IntelliJ IDEA 快捷键

如何使用IntelliJ IDEA来重构代码

在Intellij IDEA中使用Debug

在Intellij IDEA中使用Debug

在Intellij IDEA中使用Debug