仅使用正则表达式在Sublime中将字符串替换为“”

时间:2017-08-16 05:03:11

标签: regex sublimetext3

我的文件中有一长串(约100k行)字符串,如下所示:

job_title <- map["job_title"]
....

我想做一些替换,让它像这样:

jobTitle <- map["job_title"]

所以我只需将_t替换为T,但我只想要左侧。

3 个答案:

答案 0 :(得分:2)

如果您将_t替换为T,则无论上下文如何,您都会将所有_t替换为T

您可以尝试匹配所有"..."子字符串并跳过它们,然后匹配_之后的任何字母并将其转换为大写字母。如何匹配"..."子字符串取决于转义的实体是否可能出现在您的文本中。

如果没有转义引号,

搜索"[^"]*"(*SKIP)(?!)|_([A-Za-z])
替换\u$1

如果可以转义报价:

搜索"[^"\\]*(?:\\.[^"\\]*)*"(*SKIP)(?!)|_([A-Za-z])
替换\u$1

enter image description here

<强>详情:

  • "[^"\\]*(?:\\.[^"\\]*)*"(*SKIP)(?!) - 一个"..."子字符串(匹配",然后是"\以外的任何0 +字符,然后是任意0 +序列转义字符{\\.)后跟除"\以外的任何0 +字符,然后是")匹配后再从匹配中删除,以及下一个在当前比赛结束后搜索匹配(由于(*SKIP)(?!)
  • | - 或
  • _ - _字符
  • ([A-Za-z]) - 捕获第1组:任何ASCII字母

替换中的\u运算符使其后面的第一个char变为大写。 $1代表用([a-zA-Z])抓取的信件。

答案 1 :(得分:0)

在您的情况下不需要正则表达式(按Ctr + H并替换所有)

替换

job_title <

使用:

jobTitle <

答案 2 :(得分:0)

使用以下正则表达式,您只匹配第一个_t

(?<=^job)_(\w)

所以你可以用T替换它。

请参阅https://regex101.com/r/VcpAzt/1