我尝试搜索代码中的一些字符串,并将其替换为RegEx,如下所示:
将self.word替换为self.indexes ['word']
例如,替换:
self.example
与
self.indices['example']
但是它应该对所有的单词都有效,而不仅仅是“example”。因此,所需的RegEx可能不需要其中的实际单词。它实际上应该只替换单词本身以外的所有内容。
我尝试了以下方法:
self.(.*?)
它适用于搜索所有匹配'self.'的字符串,但是当我想修改它时,我丢失了'example'这样的单词,所以我无法将其修改为self. indexes ['example']。
1条答案
按热度按时间ozxc1zmp1#
您需要做的是使用捕获组进行替换。根据所用语言的不同,某些语法可能会略有不同,但通常您会希望类似于以下内容:
self\.([^\s]+)
改为:
self.indices['\1']
https://regex101.com/r/R3xFZB/1
我们使用parans来捕获
self.
后面的内容,并在replace中将捕获的数据放入\1
,这是第一个(在本例中)唯一捕获的组。对于某些语言,您可能需要$1
或\\1
作为替换变量。和大多数正则表达式一样,这可以通过很多不同的方式来实现,比如使用look arounds等。但是我认为对于新手来说,这很容易阅读、理解和维护。注解@wnull有一个更合适的正则表达式,它利用了look behind,也应该可以实现这个目的:)