请考虑以下javascript代码:
"myObject.myMethod();".replace(/\.\w+\(/g, "xxx");
选择“myObjectxxx);
”时会显示“.myMethod(
”。
现在我只选择myMethod
。换句话说,我想选择以.
开头并以(
结尾的任何字词(不包括在内)。
谢谢,卢卡。
答案 0 :(得分:24)
一般答案:使用括号捕获要保留的部分,并将其作为$1
包含在替换字符串中。
有关详细信息,请参阅任何regexp替换教程。
此处:只需在替换字符串中添加.
和(
。
对于练习,请编写一个正则表达式,将--ABC--DEF--
--DEF--ABC--
的任意字符串变为ABC
的{{1}}和DEF
的任意字母值。因此--XY--IJK--
应变为--IJK--XY--
。在这里,您确实需要使用捕获组和反向引用。
答案 1 :(得分:3)
您可以使用lookaround断言:
.replace(/(?<=\.)\w+(?=\()/g, 'xxx')
这些将允许比赛成功,同时不属于比赛本身。因此,您只需更换两者之间的部分。
对于不熟悉正则表达式的人来说,更简单的选择可能只是在替换中包含.
和(
:
.replace(/\.\w+\(/g, ".xxx(")
答案 2 :(得分:1)
我建议采用略有不同的方法:
"myObject.myMethod();".replace(/^([^\.]*\.)\w+(\(.*)$/g, "$1xxx$2");
虽然提出了更简单的解决方案。
答案 3 :(得分:0)
太棒了,谢谢您有QUIT-Anony-Mousse!
我希望 123456,SomeText 成为 123456,InsertedText,SomeText 。
我为解决此问题所做的工作如下。归功于上面的“ Has QUIT-Anony-Mousse”。我只是给出一个如何实施他的解决方案的清晰示例。
查找:
(123456),SomeText
替换:
$ 1,InsertedText,SomeText
使用Regex从此查找和替换中获得的结果是:
123456,InsertedText,SomeText
通过使用123456左右的括号,它基本上将123456分配给了我可以通过在替换中使用“ $ 1”来使用的变量。希望有道理。再次感谢!