ada*_*ian 7 regex visual-studio-code
我正在尝试为对象的开头创建一个正则表达式,以便我可以"
在 vscode 的查找和替换中用一个完整的块替换块。
我的正则表达式
("id":{"\$oid":)[0-9]+(},"product_id":)[0-9]+(,")
Run Code Online (Sandbox Code Playgroud)
我的样本输入
{"id":{"$oid":973},"product_id":973,"product_name":"Scotch - Queen Anne","product_amount":92,"product_group":"not perishable","distribution_to":"The Salvation Army Visalia - Neighborhood Market","distribution_from":"MCFB","expiration_date":"8/24/2020","pack_date":"4/19/2021","sell_by_date":"12/6/2020","use_by_date":"2/18/2021","created_at":"2020-04-24 03:15:40 -0400","updated_at":"2020-04-24 03:15:40 -0400"},
Run Code Online (Sandbox Code Playgroud)
我已经在这些网站上成功测试了这个表达式:regex101.com、regexr.com,但是,当我粘贴到我的 vscode 中时仍然出现错误。
sai*_*aen 10
这是一个有效的正则表达式,至少在 VS Code 使用的 JavaScript 引擎中(请参阅此答案),但我认为 VS Code 的验证引擎被未转义的花括号混淆(就像我一样)——开头{
在第一组中,并且}
第二次闭幕。
正如@rioV8 和@Nick 在评论中所建议的,您需要使用反斜杠\
将它们转义以使其工作:
("id":\{"\$oid":)[0-9]+(\},"product_id":)[0-9]+(,")
Run Code Online (Sandbox Code Playgroud)
这是一个演示原始正则表达式在 JS 中工作的小演示:
("id":\{"\$oid":)[0-9]+(\},"product_id":)[0-9]+(,")
Run Code Online (Sandbox Code Playgroud)
const regex = /("id":{"\$oid":)[0-9]+(},"product_id":)[0-9]+(,")/;
const sample = '{"id":{"$oid":973},"product_id":973,"product_name":"Scotch - Queen Anne","product_amount":92,"product_group":"not perishable","distribution_to":"The Salvation Army Visalia - Neighborhood Market","distribution_from":"MCFB","expiration_date":"8/24/2020","pack_date":"4/19/2021","sell_by_date":"12/6/2020","use_by_date":"2/18/2021","created_at":"2020-04-24 03:15:40 -0400","updated_at":"2020-04-24 03:15:40 -0400"},';
const result = sample.match(regex);
let output = [
`full match:\t${result[0]}`,
`group 1:\t${result[1]}`,
`group 2:\t${result[2]}`,
`group 3:\t${result[3]}`
]
document.querySelector("#result").innerText = output.join('\n');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2156 次 |
最近记录: |