如何使用正则表达式在 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 中用小写替换大写?的主要内容,如果未能解决你的问题,请参考以下文章