在每个大写字母前面加一个点,然后小写单词

时间:2016-07-12 08:30:44

标签: regex sublimetext2 sublimetext3

我在正则表达式中相当新,因此我决定寻求帮助。

情况如下:我必须将此格式[az] [AZ] [0-9]的文本转换为此格式[az] [0-9] [。],其中每个大写字母或字母数字字符前(除非字母/数字是第一个,如果单词)应该放置一个点.,然后小写整个单词。

以下是替换模式的示例:

从此IAmHuman到此i.am.human

从此HelloGuys2到此hello.guys.2

从此isthereany1heRe到此isthereany.1he.re

我帮你理解!

1 个答案:

答案 0 :(得分:1)

我可以建议采用两步法:

查找(?<!\S)[[:upper:][:digit:]]
替换\l$0

如果在大写字母((?<!\S))或数字([:upper:])之前有非空格,那么[:digit:]会使匹配失败,然后

查找(?<=\S)[[:upper:][:digit:]]
替换.\l$0

其中(?<=\S)在大写字母或数字之前需要非空格。

替换是不同的,所以我们需要两个步骤。 $0表示整个匹配,\l将匹配的字符变为小写。

您可以使用[:upper:]代替[A-Z]代替[:digit:] \d,而不是 @HostListener("window:scroll", ["$event"]) doSomething(event) { let topOffset = document.documentElement.scrollTop || document.body.scrollTop if(topOffset > this.scrollPosition) { this.el.classList.remove("pinned") this.el.classList.add("unpinned") } else { this.el.classList.remove("unpinned") this.el.classList.add("pinned") } this.scrollPosition = topOffset }

结果:

enter image description here