【问题标题】:Eclipse file search regular expression operationEclipse文件搜索正则表达式操作
【发布时间】:2016-12-25 09:27:49
【问题描述】:

我的应用程序中有 catApplecatBoycatChild、...catRobIsAGoodBoy、...catZebraIsAnAnimal 等字符串作为类名。

现在我必须从所有类名中删除 cat 前缀。使用 Eclipse 中的文件搜索,我可以搜索 cat[A-Z],这给了我所有匹配的类名(同时确保像 cat) 这样的字符串被过滤掉)。此外,我必须将新的第一个字符小写。

我可以在我的替换命令中以某种方式使用$ 运算符并实现此目的吗?

例如cat[A-Z] 给了我catMercedesIsACar,我将它转换为mercedesIsACar

谢谢。

【问题讨论】:

  • 你不能在 Eclipse 中这样做,但你可以在 Notepad++ 中这样做。
  • 这听起来很不方便。因为我需要跨多个文件执行此操作。不过,我怎样才能在 NPP 中做到这一点?
  • 我认为最安全的应该是\bcat([A-Z]) -> \l$1 (使用单词边界\b 因为cat 在单词的开头,对吧?)。实际上,在 NPP 中有一个选项 Replace in Files
  • 是的 cat 在每个字符串的开头。

标签: regex eclipse replace full-text-search notepad++


【解决方案1】:

由于 Eclipse regex S&R 特性不支持\l / \L...\E 运算符可用于替换模式以执行额外的小写操作,因此您实际上可以使用 Notepad++ 在许多文件中进行搜索和替换。

在 NPP 的 Replace in Files 中(按 Shift + Ctrl + F),使用

\bcat([A-Z])

并替换为\l$1。单词边界\b 将仅匹配单词开头的cat注意 匹配大小写 已开启。

【讨论】:

  • $1 反向引用仅获取第一对非转义括号内的模式捕获的值(即[A-Z]),并将该值转换为\l 小写。这仅适用于 ASCII 字母,但我想您只需要它。
  • 啊.. 这个解决方案效果很好。谢谢维克托。 :)
  • 提示:我还了解到 `\u' 可用于将小写匹配转换为大写。
  • 是的,\U...\E 仅用于替换模式的特定部分。
猜你喜欢
  • 2013-05-24
  • 2011-06-04
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多