我在正则表达式中相当新,因此我决定寻求帮助。
情况如下:我必须将此格式[az] [AZ] [0-9]的文本转换为此格式[az] [0-9] [。],其中每个大写字母或字母数字字符前(除非字母/数字是第一个,如果单词)应该放置一个点.
,然后小写整个单词。
以下是替换模式的示例:
从此IAmHuman
到此i.am.human
从此HelloGuys2
到此hello.guys.2
从此isthereany1heRe
到此isthereany.1he.re
我帮你理解!
答案 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
}
。
结果: