regex - 在括号内添加引号 - 正则表达式

标签 regex replace

好的,所以我尝试使用我的文本编辑器(sublime text)在正则表达式模式下进行查找和替换。我在多个文件中有数百个字符串,其中包含需要转换为 ['some_text'] 的 [some_text]。以下内容适用于匹配和替换后面不带引号的起始括号:

find:      \[(?!')
replace:   ['

但是,查找之前不带引号的右括号的相同逻辑似乎匹配所有右括号,甚至是那些之前带引号的右括号。有什么想法吗?

find:      (?!')\]
replace:   ']

最佳答案

在第二种情况下,您需要使用后视而不是前视:

find:      (?<!')\]
replace:   ']

原因是前瞻 (?!...) 会查看正则表达式引擎当前位置的右侧。因此,如果您想匹配 ] 并在其前面执行前瞻,正则表达式引擎将根据 ] 本身进行检查,这(当然)不是'

另一方面,lookbehind 会查看正则表达式引擎当前位置的左侧,这正是您想要的。

请注意,在这两种情况下,环视都不会消耗任何字符!检查它们不会提升正则表达式引擎的位置。这就是环视方向相关的原因。

您可以阅读有关环视和正则表达式引擎内部结构的更多详细信息 here .

(顺便说一句,您通常不需要转义 ]。如果没有开头 [,它永远不会被误认为是元字符。)

关于regex - 在括号内添加引号 - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13059593/

相关文章:

php - MySQL REPLACE 行,其中字段 a 等于 x,字段 b 等于 y

python - 如何使用文件指针在特定行或单词之后编辑文本文档

javascript - 替换对象(和/或数组)中字符串的所有实例 - JavaScript

python - 如何删除包含特定字符串的行?

Java的 String .replaceFirst 不起作用,我不知道它是一个错误还是我做错了

mysql - 如何使用带变量的 MySQL REPLACE?

python - 使用 Beautiful Soup 从 'src' 标签中提取 'img' 属性

python regex unicode - 从 utf-8 文件中提取数据

regex - 在 Lua 中使用正则表达式查找前导星号

javascript - 使用正则表达式来匹配一个或多个单词的一部分