【问题标题】:VSCode wildcard Search and Replace RegexVSCode 通配符搜索和替换正则表达式
【发布时间】:2017-10-17 17:11:23
【问题描述】:

我正在尝试进行项目范围的搜索和替换

来自:

drivers[i].findElement(By.id("elementID")).click();

到:

findAndClick(driver[i], "elementID", true)

问题是 elementID 可以是任何东西,所以我正在尝试通配符搜索并替换为通配符中的内容?

【问题讨论】:

  • 这些不是通配符,而是一个正则表达式。您需要转义[() 并匹配任何字符,请使用.*.*?
  • 我试过了,但一无所获:drivers[i].findElement(By.id[(".*?")])].click[()]
  • 我也忘了提点:drivers\[i]\.findElement\(By\.id\(".*?"\)\)\.click\(\);
  • 是的,这回答了我的问题,谢谢

标签: regex visual-studio-code


【解决方案1】:

您需要在这里使用.+? 而不是*,因为这使用了正则表达式。

在正则表达式中,点. 表示“任何字符”,加号+ 表示“一次或多次”,而在此之后的问号? 表示“尝试尽可能少地匹配此字符” " - 这很有用,所以它不会一直匹配你的引号

编辑

但要清楚,您必须创建一个有效的正则表达式,这意味着您需要转义括号、点等。

这是完整的解决方案

查找drivers\[i\]\.findElement\(By\.id\("(.+?)"\)\)\.click\(\);

替换为: findAndClick(driver[i], "$1", true)

注意在“通配符”(.+) 周围添加的 未转义 括号,这会在正则表达式中创建一个捕获组,在替换中转换为 $1,因为它是第一次捕获组。

【讨论】:

  • 这给了我一个错误drivers[i].findElement(By.id(".+")).click();
  • 不必在字符类之外转义]
  • (.+?) 必须用括号括起来。起初我错过了那些
  • 我只需要使用. 而不是.+?,两者都给了我相同的结果。
猜你喜欢
  • 2019-11-03
  • 1970-01-01
  • 2013-06-14
  • 2012-08-30
  • 2018-05-25
  • 2010-11-25
  • 2010-10-30
  • 1970-01-01
相关资源
最近更新 更多