gpt4 book ai didi

regex - 使用 Notepad++ 的正则表达式在等号周围添加空格的困难

转载 作者:行者123 更新时间:2023-12-02 03:33:00 24 4
gpt4 key购买 nike

我目前正在尝试通过添加来提高我的一些 python 脚本的可读性等号周围的空格。例如,当前的作业如下所示:

foo=4
bar[index]=4

我想把它改成:

foo = 4
bar[index] = 4

我已经找到以下已回答的问题 Notepad++: Search and Replace with Regular Expression这表明在“查找内容”中使用以下正则表达式应该有效:

(?<=[\w\]\)])=(?=\w)

Notepad++ 正确地找到了所有对应的等号,但它没有替换它们,无论我尝试用什么替换它们。我现在正在使用:

([\w\]\)])=(\w)

在“查找内容”中连同:

\1 = \2

在“替换为”中,它完成了工作。但是,我不明白为什么初始正则表达式不起作用,特别是因为它(好吧,相当于它的东西)在链接的问题中被标记为正确。它在 Notepad++ 6.6.1 或 6.6.8 中均不起作用。我不是很熟悉正则表达式,这是我第一次在 Notepad++ 中使用它们,所以我将不胜感激任何帮助。

编辑:澄清一下:在我的任何尝试中,我都没有将“替换为”字段留空,而是总是用 = 或其他字符串填充它。对于我最初的正则表达式,我没有使用 \1 =\2

但我想我已经确定了问题所在。到目前为止,我已经尝试了所有的建议,但似乎都没有用。但是当我点击“全部替换”而不是“替换”时,Notepad++ 确实正确地替换了所有内容,即使是我最初的正则表达式也是如此。我不确定这是否是预期的行为。

最佳答案

该问题的可接受答案仅包含搜索表达式。提问者留下评论指出替换字符串应该留空。所做的是删除任何匹配的内容。

您在这里要做的不是删除 =运算符(因为这会非常灾难性地破坏您的脚本!),但只需用空格键填充它们。

原始正则表达式的作用:

(?<=[\w\]\)])=(?=\w)

是否找到任何=那个字符

  • 前面是 \w 之一, ]) , 如 (?<=[\w\]\)]) , 和
  • 后跟一个 \w , 如 (?=\w) .

(?<=)(?=)部分是lookbehind and lookahead assertions分别不是capture groups .由于您的原始正则表达式未捕获任何内容,因此替换为 \1 = \2不会按预期工作。

在您的工作正则表达式中:

([\w\]\)])=(\w)

?<=?= token 被删除,这使得两个括号捕获组。这允许 \1 = \2反向引用工作,在第一次捕获之间插入空格, =签名,并适本地进行第二次捕获。

附带说明(因为您已经找到了可行的解决方案),您仍然可以使原始正则表达式工作,但替换字符串应该只是 =被空间包围。由 lookbehind 和 lookahead 断言测试的东西实际上从未被拾取——唯一匹配的字符是 =自己签名——所以当你更换时它不会消失。

关于regex - 使用 Notepad++ 的正则表达式在等号周围添加空格的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25525939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com