正则表达式做一个非连续的查找和替换

时间:2013-06-04 20:48:17

标签: regex

通常,我会遇到一些情况,我想找到并替换字符串的两边,并保持中间完好无损。通常,第一部分很容易识别,但第二部分太常见了。这是一个例子:

要将代码字符串ActiveDocument.Sections["SectionName"]更改为SectionName,很容易找到第一部分,但后者"]在没有与ActiveDocument.Sections["的关系的情况下太常见了。显然,如果SectionName是一个静态字符串,这没关系,我可以找到包含的整个代码字符串来替换。

有没有办法匹配双方,跳过中间,或者正则表达式只找到连续的部分?或者也许有一种方法可以通过暂时存储.*?在表达式中找到的内容来做我想要的事情?

我正在使用UltraEdit进行查找/替换操作。我也可以使用Javascript作为字符串执行代码,即:codestring.replace()

2 个答案:

答案 0 :(得分:2)

这取决于您使用的工具,但在Javascript中,您可以使用$1返回第一个捕获组。

因此,您可以将模式ActiveDocument.Sections\["(.*?)"\]用于“查找”,将$1用于“替换”。

我使用regular-expressions.info

上的javascript正则表达式工具对此进行了测试

答案 1 :(得分:0)

.*\["(.*?)"\]在Python中为我工作

import re
re.match(r'.*\["(.*?)"\]', 'ActiveDocument.Sections["SectionName"]').group(1)
'SectionName'

基于online test,它似乎也适用于Javascript。