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

Append a dot before each Capital letter and then lowercase the word

我对正则表达式还很陌生,因此我决定寻求帮助。

情况如下:我必须将文本从这种格式 [a-z][A-Z][0-9] 转换为这种格式 [a-z][0-9][.],其中每个大写字母或字母数字字符(除非 letter/number 是第一个单词)应该放置一个点 . 然后将整个单词小写。

这是替换模式的示例:

从这个IAmHuman到这个i.am.human

从这个 HelloGuys2 到这个 hello.guys.2

从这个 isthereany1heRe 到这个 isthereany.1he.re

我帮你出主意!

我可以建议一个两步法:

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

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

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

其中 (?<=\S) 要求大写字母或数字前有一个非空格。

替换不同,所以我们需要2个步骤。 [=18=] 指的是整个匹配,\l 将匹配的字符转为小写。

您可以使用 [A-Z] 代替 [:upper:],可以使用 \d 代替 [:digit:]

结果: