【发布时间】:2021-09-24 21:18:22
【问题描述】:
上下文
我有一个非常长的文本文件,我正在尝试使用 Sublime 的正则表达式查找/替换选项对其进行润色。我正在使用 Sublime Text 的 build 4113。我已将文本文件的本质简化为这个可重现的示例来说明我的问题:
the quick
brown fox
jumps over
the lazy_dog
我想替换两列文本之间的空格。 Sublime 正确地突出显示与此后视的匹配:(?<=[a-z]) *
请注意 * 量词后的尾随空格。
预期行为
Sublime 的“全部替换”功能在使用上述lookbehind 时按预期工作。用单个空格替换正则表达式的所有实例会产生以下预期结果:
the quick
brown fox
jumps over
the lazy_dog
如果我尝试使用“查找”和“替换”的组合来迭代匹配项,我希望正则表达式光标位置前进到每个实例并允许我有选择地应用替换。
意外行为
但是,当我尝试使用“查找”和“替换”选择性地应用替换时,即使继续以黄色突出显示每个后续实例,Sublime 也只会替换第一个实例,这表明正则表达式引擎“看到”了匹配项。
有人可以帮助我填补我的理解空白吗?如果这个问题已经得到回答,我们深表歉意。我花了几个小时搜索,但也许我没有使用合适的关键字。
【问题讨论】:
-
只是感兴趣:如果你使用
(?<=[a-z]) +呢? -
感谢@WiktorStribiżew 的建议。不幸的是,同样的行为仍然存在——“全部替换”按预期工作,但“查找”和“替换”仅适用于第一个实例。
-
这是 ST 中的一个错误,已在 build 4114 中修复:github.com/sublimehq/sublime_text/issues/2038
-
谢谢@KeithHall!我真的很高兴知道这一点。我以为我要么无能,要么疯了。我想我仍然可以,但至少我可以继续自欺欺人。我赞成你的评论。不幸的是,stackoverflow 不允许用户将评论标记为已接受的答案 (link)。如果您选择提交您的评论作为答案,我一定会接受它,以便您获得声誉积分。再次感谢!
标签: regex sublimetext