正则表达式需求:为文件未引号词加引号并选择冒号前整词
当然可以!针对你的两个需求,我来详细给你说明:
1. 给未加引号的JSON键添加引号的正则方案
要给所有冒号前未加引号的合法标识符添加引号,你可以用下面的正则查找和替换规则(适用于VS Code、Sublime Text等支持正则替换的编辑器):
查找正则:
(\b[a-zA-Z_][a-zA-Z0-9_]*\b)(?=\s*:)
替换内容:
"$1"
正则解释:
\b:单词边界,确保我们匹配的是完整的单词,不会误匹配字符串中间的类似字符[a-zA-Z_][a-zA-Z0-9_]*:匹配JSON合法的键名(必须以字母或下划线开头,后面可以跟字母、数字、下划线)(?=\s*:):正向预查,确保这个单词后面紧跟着冒号(允许冒号前有任意空格)
效果演示
把你提供的原始内容:
{ "performanceHighToLow" : { tabs : { bySales : "by sales", byOrder : "by order" }, category : "performanceHighToLow", onTabClick }, performanceLowToHigh : { tabs : { bySales : "by sales", byOrder : "by order" }, category : "performanceLowToHigh", onTabClick } }
替换后会变成:
{ "performanceHighToLow" : { "tabs" : { "bySales" : "by sales", "byOrder" : "by order" }, "category" : "performanceHighToLow", "onTabClick" }, "performanceLowToHigh" : { "tabs" : { "bySales" : "by sales", "byOrder" : "by order" }, "category" : "performanceLowToHigh", "onTabClick" } }
2. 匹配冒号前完整单词的方法
其实上面的正则已经完美实现了“选择冒号前完整单词”的需求——正则里的捕获组$1就是我们要找的冒号前的完整单词。
如果你只是想单独匹配这些单词,直接用这个正则即可,它会精准定位所有位于冒号前(允许空格)的合法标识符,而且通过\b保证是完整的单词,不会出现匹配部分字符的情况。
比如在你的例子里,它会匹配到tabs、bySales、byOrder、category、onTabClick这些目标单词。
内容的提问来源于stack exchange,提问作者Bharat Soni
相关产品推荐
相关产品推荐

