代码之家  ›  专栏  ›  技术社区  ›  Dan

Eclipse,正则表达式搜索和替换

  •  109
  • Dan  · 技术社区  · 15 年前

    在Eclipse中,在执行正则表达式搜索和替换时,是否可以使用匹配的搜索字符串作为替换字符串的一部分?

    基本上,我想替换

    variableName.someMethod()
    

    用:

    ((TypeName)variableName.someMethod())
    

    在哪里? 可变名称 可以是任何变量名。

    塞德 我可以使用类似的东西:

    s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
    

    也就是说, & 表示匹配的搜索字符串。日食中有类似的东西吗?

    谢谢!

    6 回复  |  直到 6 年前
        1
  •  211
  •   NomeN    15 年前

    是,“()”捕获一个组。如果我是第i个捕获组,你可以在$i中再次使用它。

    所以:

    search: (\w+\.someMethod\(\))
    replace: ((TypeName)$1)
    

    提示:文本框中的ctrl+space为正则表达式编写提供了各种建议。(恐怕向下键,在建议列表中向下键会删除您在文本框中的输入。刺激的小虫子)

        2
  •  6
  •   RightmireM    10 年前

    使用。。。
    搜索=(^.*导入)(.*)(\(.*):)
    替换=1美元2美元

    …代替…

    from checks import checklist(_list):
    

    ……

    from checks import checklist
    



    regex中的块用括号(前面不带“\”号)表示

    (^.*import)查找“from checks import”并将其加载到$1(Eclipse从1开始计数)

    (*)找到下一个“一切”,直到下一个遇到“(”并加载到$2。$2停在“”(因为下一部分(见下一行)

    (.*\)表示“第一次遇到”(“在启动块$2之后…停止块$2,启动块$3。$3将加载“(”any text'):”或在示例中加载“(”list):”

    然后在替换中,只需将$1$2替换为前两个块即可。



    Screenshot

        3
  •  3
  •   Community CDub    8 年前

    NomeN 回答正确,但这个答案对像我这样的初学者没有多大用处,因为我们还有另一个问题要解决,我们不知道如何在那里使用regex。所以我要对这个做一点解释。答案是

    搜索:(\w+\.somemethod\(\)

    替换:((typename)$1)

    在这里:

    搜索:

    • 第一个和最后一个“(”)在regex中描述一个组

    • “\w”表示单词(字母数字+下划线)

    • “+”表示一个或多个(即一个或多个字母数字+下划线)

    • “.”是一个特殊的字符,它描述任何字符(即+表示 任何字符中的一个或多个)。因为这是一个特殊的角色 要描述一个'。'我们应该给它一个转义字符,即''。

    • “somemethod”是在搜索时给出的。

    • 两个括号“(”,“)”与转义符一起给出 因为它们是用来描述一个群体的特殊特征 (我们将在下一点讨论组)

    替换中:

    • 它被给予 ((类型名)1美元) '这里$1描述了 组。这是第一个字符中包含的所有字符 搜索字段中的最后一个括号',')'

    • 还要确保已在中选中“正则表达式”选项 查找替换框

    有关regex的更多信息,请参见 http://regexr.com/ .

        4
  •  2
  •   Yaroslav Lyakh    13 年前

    至少有STS(SpringSource工具套件)组从0开始编号,因此替换字符串将

    replace: ((TypeName)$0)
    
        5
  •  0
  •   MadNik    11 年前

    因为有人需要一个关于如何在Eclipse上使用regx的解释和示例,希望这会有用。这是我的问题。

    enter image description here

    我想改名

    /download.mp4^lecture_id=271
    

    /271.mp4
    

    其中可能有很多。

    你应该怎么做。

    enter image description here

    然后点击查找/替换按钮

        6
  •  0
  •   Rahul Raghuvanshi    6 年前

    我在找regex来删除空白行中的空格。下面是要查找的regex:

    ^ s*r?\n

    替换为

    \ N号

    只需在“查找和替换向导”中使用此选项,它就可以100%工作。