【问题标题】:Unable to selectively apply replacement text of regular expression using Sublime Text无法使用 Sublime Text 选择性地应用正则表达式的替换文本
【发布时间】: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


【解决方案1】:

好消息是你没疯,坏消息是这是 ST 的一个错误。更好的消息是它已在 build 4114 中修复 - 我已通过您在 Linux 中 build 4115 上的示例亲自验证了它。

有关详细信息,请参阅问题跟踪器上的此错误:https://github.com/sublimehq/sublime_text/issues/2038

【讨论】:

  • 再次感谢您,@Keith!接受的答案
猜你喜欢
  • 2013-05-05
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2021-07-01
  • 1970-01-01
相关资源
最近更新 更多