javascript - 如何用正则表达式替换所有出现
问题描述
我有一个package.json
和一些依赖版本是:
...
"dependencies": {
"@octopol/common": "workspace:packages/common",
}
...
例如,我想将所有这些 ( workspace:packages/<something>
) 版本替换为1.0.0
.
我试过这个:
`"@octopol/common": "workspace:packages/common","@octopol/aa": "workspace:packages/aa",`
.replace(/(workspace:packages\/(.*))/g, "1.0.0")
我期待得到:
"@octopol/common": "1.0.0","@octopol/aa": "1.0.0",
但结果是:
'"@octopol/common": "1.0.0'
我在这里想念什么?
解决方案
匹配到行尾,并且由于您的.*
输入是单行,因此/(workspace:packages\/(.*))/g
匹配workspace:packages/
,然后匹配除换行符之外的任何零个或多个字符,尽可能多,直到行尾。你需要以某种方式缓和点。
一个可能的解决方案看起来像
console.log(
`"@octopol/common": "workspace:packages/common","@octopol/aa": "workspace:packages/aa",`
.replace(/workspace:packages\/[^"]*/g, "1.0.0")
);
在哪里workspace:packages\/[^"]*
匹配
workspace:packages\/
-workspace:packages/
字符串[^"]*
- 除 . 之外的零个或多个字符"
。
如果要替换的部分不能包含空格,您可以进一步将模式精确为/workspace:packages\/[^"\s]*/g
.
请参阅正则表达式演示。
推荐阅读
- asp.net-mvc - ASP.NET CORE 3.1 和 Blazor 的报表设计器/生成器选项是什么?
- javascript - 如何获取在javascript中更改名称的方法
- javascript - 如何以角度为方法 addProduct 编写测试用例
- vb.net - 更改 DataGridViewButtonCell 的背景颜色
- java - CRUD API Spring Boot 复制条目
- dictionary - groovy嵌套地图更新值而不检查值类型
- python - 如何为 nlohmann::basic_json 编写自定义调试助手?
- java - SoapuUI.setSoapUICore 导致 Junit 线程结束
- python - Pandas Dataframe 替换异常值
- scala - 如何使用参数化类作为键来操作地图