如何使用正则表达式将连续的大写字母替换为小写字母? (但不能替换单个大写字母)

时间:2018-11-02 03:14:28

标签: regex

文字示例,

  

我们不会让这些也由一些非常大的车队组成的大篷车   坏暴徒和帮派成员,进入美国。我们的边界是神圣的,必须   合法进来。

我想将NOT替换为not。但是请不要替换We, Caravans, U.S. Our Border

我找到了这个Regex replace uppercase with lowercase letters

Find: (\w) Replace With: \L$1

这将替换所有大写字母。

PS:之所以这样做,是因为我使用TTS产生声音。 NOT将发音为N.O.T。我只希望将其读取为not。我不想替换太多东西。因为读者会看到文本,所以保留原文会很好。

3 个答案:

答案 0 :(得分:1)

由于\L在捕获组将其变为小写之前,无论您处于何种环境中,听起来您需要做的就是查找两个或多个大写字符:匹配

([A-Z]{2,})

并替换为

\L$1

如果您只想替换完整的单词,请同时添加单词边界:

(\b[A-Z]{2,}\b)

(您可以省略捕获组并使用$&代替$1

答案 1 :(得分:0)

仅在您发布的问题Regex replace uppercase with lowercase letters

第二个答案可以解决您的问题

发现:

([A-Z]){2,n}

替换:

\L$1

答案 2 :(得分:0)

我想我会这样做:

(\b[A-Z]{2,}\b)

\b是单词边界,[A-Z]只是大写字母,而{2,}是两个或更多。

https://regex101.com/r/qHmE1V/1

然后替换\L$1