【问题标题】:Sublime Bug with Regular Expressions带有正则表达式的 Sublime Bug
【发布时间】:2015-02-06 14:38:12
【问题描述】:

我正在尝试进行崇高的正则表达式搜索并替换为反向引用。这是我的数据集:

if(requestType.endsWith("CompleteMulti")) {
if(requestType.endsWith("CompletePartial")) {
if(requestType.endsWith("Unfulfillable")) {

当我运行正则表达式时:

^.+"(\w+)".+$

用替换语句:

$1

我得到以下输出:

completemuLti
completepaRtial
unfulfillaBle

正如您所看到的,字母的大小写都很混乱。 我使用的是 2.0.2 版,Build 2221

这是一个已知问题吗?一些谷歌搜索没有出现任何数据。如果有人知道解决方法,请告诉我。

【问题讨论】:

  • 在 Sublime 3 (build 3065) 中,它按预期工作,无需更改大小写。所以看起来像一个错误。
  • 我在 Ubuntu 14.10、OS X 10.8.5 和 Windows 8 上使用 ST2 进行了测试,它对我来说都适用于这三个系统。您确定 Replace 字段中没有其他内容吗?
  • 如果我在替换文本时选择“保留大小写”选项,我可以在构建 3065 上重现此内容,因为它保留了之前存在的字符的大小写.. 不是错误! :)
  • 不是错误,嗯?我真的想不出一个单一的用例,这将是理想的行为。也许这不是默认操作,当我第一次学习 Sublime 时,我在某处更改了此设置...
  • @IcedD​​ante 我能想到一个有用的用例。我会更新我的答案

标签: regex sublimetext2 sublimetext


【解决方案1】:

在执行“全部替换”之前,取消选择“保留大小写”选项 (ALT+A)

“保留大小写”将保留之前处于该位置的字符的大小写。快速演示:

if(requestType.endsWith("CompleteMulti")) {
if(requestType.endsWith("CompletePartial")) {
if(requestType.endsWith("Unfulfillable")) {
completemuLti
completepaRtial
unfulfillaBle

          ^ only this character is left in upper case

另一个例子。这次我们将用“bananas”替换“sublime”,使用不区分大小写的正则表达式并选择“preserve case”:

之前:

SUblime
suBLime
sublIME

之后:

BAnanas
baNAnas
banaNAS

作为对 IcedD​​ante 的评论的回应,我可以想到一个用例,它会成为所需的行为(尽管可能是人为的)。想象一下您要发送给许多大学的一封信:

亲爱的布拉敦大学,

我写信是为了询问您的应用生物学 101 课程,因为我 了解您是生物学领域的领先学校。我有 一直对生物研究领域有着浓厚的兴趣,因此 这门课程,应用生物学 101,特别有趣。

然后你还想查询地理课程,你可以用“geograph”查找/替换“biolog”,保持这种情况:

亲爱的布拉敦大学,

我写信是为了询问您的应用地理 101 课程,因为我 了解您是地理领域的领先学校。一世 一直对地理研究领域有着浓厚的兴趣 所以这门课程,应用地理 101,特别有趣。

很做作,我知道。

注意 - 我已尝试在文档中查找对此的引用,但找不到任何明确的内容...

【讨论】:

  • @IcedD​​ante 诚然,这不是一个很好的例子!也许你在不知不觉中按下了 ALT+A?
  • 啊,我明白你在这里做什么了。有时我在处理代码时会想要修改一个大写和小写的单词。就像类名 ShipDialog 及其实例 shipDialog 一样,例如,我想将 ship 更改为 return。我认为这会派上用场。
  • @IcedD​​ante 这比我的例子好得多!
猜你喜欢
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多