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

Regex 如何使用正则表达式将连续的大写字母替换为小写字母?(但不替换单个大写字符),regex,Regex,文本示例 我们不会让这些大篷车,它们也是由一些非常重要的材料组成的 恶棍和帮派成员,进入美国,我们的边界是神圣的,必须 合法入境 我想将非替换为非。但不要取代我们,商队,我们的边界 我找到了这个 这将替换所有大写字母 PS:我这样做的原因是我使用TTS来产生声音非将发音为N.O.T。我只希望它被理解为而不是。我不想更换太多东西。因为读者会看到文本,所以保持原稿就好了。因为在捕获组将其转换为小写之前,无论您的环境是什么,听起来您需要做的就是查找两个或更多大写字符:match ([A-Z]{2,})

文本示例

我们不会让这些大篷车,它们也是由一些非常重要的材料组成的 恶棍和帮派成员,进入美国,我们的边界是神圣的,必须 合法入境

我想将
替换为
。但不要取代
我们,商队,我们的边界

我找到了这个

这将替换所有大写字母


PS:我这样做的原因是我使用TTS来产生声音<代码>非
将发音为
N.O.T
。我只希望它被理解为
而不是
。我不想更换太多东西。因为读者会看到文本,所以保持原稿就好了。

因为在捕获组将其转换为小写之前,无论您的环境是什么,听起来您需要做的就是查找两个或更多大写字符:match

([A-Z]{2,})
并替换为

\L$1
如果您只希望替换完整的单词,请同时添加单词边界:

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

(您可以省略捕获组并使用
$&
而不是
$1

仅在您发布的问题中

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

查找:

替换:

\L$1

我想我应该这么说:

(\b[A-Z]{2,}\b)
\b
是单词边界,
[a-Z]
只是大写字母,
{2,}
是两个或两个以上


在你的替换
\L$1

中发布你的尝试。@AvinashRaj,我的理由?
\L$1
(\b[A-Z]{2,}\b)