首页 > 解决方案 > Ingore 单词并在每个单词正则表达式上加上下划线

问题描述

我只需要找到并替换 VsCode 中设置的以下单词

t("US.TL.PACKAGES:installmentDetail.discount")

我通过以下方式尝试了很多

(?:US\.TL\.PACKAGES:)([a-z])([A-Z])

但是当我使用

([a-z])([A-Z])

这将捕获字符串中的所有上部。

我需要按每个新词分组。

installment Detail discount

下划线我正在使用

\1_\2 in Replace

最终输出

US.TL.PACKAGES:INSTALLMENT_DETAILS.DISCOUNT

标签: javascriptregexvisual-studio-code

解决方案


以下内容可以在搜索和替换工具中使用,而不是在文件中的查找/替换功能(以Ctrl+Shift+F开头)中使用,因为后者使用另一个旧的正则表达式引擎,而前者使用现代 ECMAScript 2018+ 兼容引擎,就像在大多数主要 JavaScript 中一样环境:

  1. US.TL.PACKAGES:在字符串后的非空白文本条纹中的每个小写字母和大写字母之间插入下划线:
(?<=\bUS\.TL\.PACKAGES:\S*?[a-z])(?=[A-Z])

替换为单纯的_. 确保Aa选中该选项,因为匹配必须区分大小写:

在此处输入图像描述

  1. US.TL.PACKAGES:在字符串大写之后的非空白文本条纹中创建所有字母条纹:
(?<=\bUS\.TL\.PACKAGES:\S*?)[A-Za-z]+

替换为\U$0

在此处输入图像描述

结果是

在此处输入图像描述


推荐阅读