正则表达式用于查找替换修改

时间:2012-08-15 09:09:46

标签: regex eclipse

我想在 eclipse 中使用正则表达式来熟悉软件更新的代码。

而不是

{$CFG->prefix}example1.xy

代码必须是:

{example1}.xy

工作。

另一个例子是:

{$CFG->prefix}example2.foo

>

{example2}.foo

常数部分是:{$CFG->prefix}; .

我尝试了以下内容(我使用空格来简化阅读):

查找:\{\$CFG-\>prefix\} ([a-z]|[0-9])* \. ([a-z]|[0-9])*

哪个会找到请求的字符串。我很难替换它。

我可以使用,/1存储正则表达式的结果并在替换中使用它(对吗?)但我不确定如何修改/操作此结果。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你可以尝试

\{\$CFG-\>prefix\}([a-z0-9]*)\.

并替换为

{\1}.
  1. 我不确定为什么你的正则表达式中有空格,我删除了它们。

  2. 量词*应位于您的论坛内,否则您只会在\1中找到最后一个匹配的字符,而不是完整的字词。

  3. 由于您不想更换最后一部分,因此无需匹配和替换它。

答案 1 :(得分:1)

尝试以下搜索并替换:

查找\{\$CFG->prefix\}([a-z0-9]*)\.([a-z0-9]*)

替换为{\1}.\2

使用以上内容:

Before成为After

Here 是一个快速的屏幕演示,可以显示这一点。

对OP的Find reg-ex

所做的更改

为了让上面的find-replace工作,我不得不对OP的find表达式进行以下更改:

  1. 删除了空格。
  2. 在群组中移动了贪婪匹配修改器:即([...]*)而不是([...])*
  3. 更正了字符集:即[a-z0-9]而不是[a-z]|[0-9]
  4. 介绍了另一个在此期间捕获该部分的集团。然而,这并不是严格需要的,但在某些情况下可能会有用。