Vs代码对捕获组执行正则表达式结果:\ u replace修饰符不起作用

问题描述 投票:-1回答:3

我有这个样本字符串:

registerForm.main.myApplicant = value

我需要替换为:

registerForm.main.getMyApplicant() = value

我想出的正则表达式是:

\w+\.\w+\.(\w)(\w+)

$1等于需要转换为大写字母的m$2等于需要附加()的单词的其余部分。

当我这样做:

FIND:    \w+\.\w+\.(\w)(\w+)
REPLACE: get\u$1$2()

它只是打印出\ u而不是将其大写。如何在捕获组$1上执行正则表达式?

我也尝试过$1=\u$1

这里是regexr demo

regex search replace visual-studio-code
3个回答
1
投票

您可以使用可用于全局文件搜索和替换的两个正则表达式步骤。

我将(\w)组模式修改为([a-z]),因为我们只需要匹配该组中具有小写字母的那些字符串。

[步骤1查找内容\w+\.\w+\.([a-z])(\w+)替换为get###ABCDEFGHIJKLMNOPQRSTUVWXYZ$1$2()

其中###是伪造的锚文本,可帮助您识别第二步中需要处理的文本。该文本目前看起来像

get###ABCDEFGHIJKLMNOPQRSTUVWXYZmyApplicant() = value
get###ABCDEFGHIJKLMNOPQRSTUVWXYZnewValue() = value
get###ABCDEFGHIJKLMNOPQRSTUVWXYZxyzApplicant() = value

[步骤2查找内容###(?:(A)BCDEFGHIJKLMNOPQRSTUVWXYZa|A(B)CDEFGHIJKLMNOPQRSTUVWXYZb|AB(C)DEFGHIJKLMNOPQRSTUVWXYZc|ABC(D)EFGHIJKLMNOPQRSTUVWXYZd|ABCD(E)FGHIJKLMNOPQRSTUVWXYZe|ABCDE(F)GHIJKLMNOPQRSTUVWXYZf|ABCDEF(G)HIJKLMNOPQRSTUVWXYZg|ABCDEFG(H)IJKLMNOPQRSTUVWXYZh|ABCDEFGH(I)JKLMNOPQRSTUVWXYZi|ABCDEFGHI(J)KLMNOPQRSTUVWXYZj|ABCDEFGHIJ(K)LMNOPQRSTUVWXYZk|ABCDEFGHIJK(L)MNOPQRSTUVWXYZl|ABCDEFGHIJKL(M)NOPQRSTUVWXYZm|ABCDEFGHIJKLM(N)OPQRSTUVWXYZn|ABCDEFGHIJKLMN(O)PQRSTUVWXYZo|ABCDEFGHIJKLMNO(P)QRSTUVWXYZp|ABCDEFGHIJKLMNOP(Q)RSTUVWXYZq|ABCDEFGHIJKLMNOPQ(R)STUVWXYZr|ABCDEFGHIJKLMNOPQR(S)TUVWXYZs|ABCDEFGHIJKLMNOPQRS(T)UVWXYZt|ABCDEFGHIJKLMNOPQRST(U)VWXYZu|ABCDEFGHIJKLMNOPQRSTU(V)WXYZv|ABCDEFGHIJKLMNOPQRSTUV(W)XYZw|ABCDEFGHIJKLMNOPQRSTUVW(X)YZx|ABCDEFGHIJKLMNOPQRSTUVWX(Y)Zy|ABCDEFGHIJKLMNOPQRSTUVWXY(Z)z)替换为$1$2$3$4$5$6$7$8$9$10$11$12$13$14$15$16$17$18$19$20$21$22$23$24$25$26

现在,结果将是最终的:

getMyApplicant() = value
getNewValue() = value
getXyzApplicant() = value

1
投票

两步可能性

1)

FIND:    \w+\.\w+\.(\w)(\w+)
REPLACE: get@@@$1$2()

2)

  • 选择@@@
  • 全选:Ctrl + Shift + L
  • 展开选择1个字符:Ctrl + Shift + ArrowRight
  • 使用命令:转换为大写字母>>
  • 缩小选择1个字符:Ctrl
  • + Shift + ArrowLeft
  • 删除选择:删除
  • 停止多光标:转义

1
投票

新答案

© www.soinside.com 2019 - 2024. All rights reserved.