regex - 如何在 Visual Studio Code 的代码片段中使用正则表达式“大写和替换”?
问题描述
我想在 Visual Studio Code 1.33.1 上创建一个片段,使用文件名创建一个 C++ 类。
首先,我要设置“include guard”,重点是使用文件名,替换每个'.' 通过'_'并将其全部设置为大写(规范):
#ifndef FILE_CLASS_HPP //filename: File.class.hpp
VSC 文档为文件名提供了一些变量,并提供了一些正则表达式来更改为全部大写并用另一个字符替换一个字符。
要点是:我从来没有做到这两点,因为我对正则表达式一无所知。
我试图手动加入正则表达式,但它从来没有奏效:
#ifndef ${TM_FILENAME/(.*)/${1:/upcase}/[\\.-]/_/g}
预期结果:
#ifndef FILE_CLASS_HPP
实际结果:
#ifndef ${TM_FILENAME/(.*)//upcase/[\.-]/_/g}
解决方案
这应该有效:
"Filename upcase": {
"prefix": "_uc",
"body": [
"#ifndef ${TM_FILENAME/([^\\.]*)(\\.)*/${1:/upcase}${2:+_}/g}"
],
"description": "Filename uppercase and underscore"
},
([^\\.]*)(\\.)* group1: all characters before a period
group2: the following period
用大写替换所有 group1:${1:/upcase}
用' '
s替换所有 group2s_
这${2:+_}
是一个有条件的替换,所以如果有后面的 group2 ,你只_
在 group1 大写的末尾添加 a。
在这种g
情况下,全局标志是必要的,以捕获所有出现的 group1group2,而不仅仅是第一次。
推荐阅读
- ios - 如何检查用户是否已在 Swift 中为 App 购买中的自动续订订阅付费
- javascript - 根据 JavaScript 中的异步函数暂停整个脚本执行的正确方法是什么?
- r - 我有一个关于优化轮班安排(供应)以在 R 中尽可能满足每小时需求的问题
- python - 如何使用正则表达式在正确的位置拆分汉字?
- python - 所有 Python3 内置模块都与 asyncio 兼容吗?(蟒蛇3.7)
- android - 在另一个类 Recyclerlist 中发送回收站列表数据
- python - Python 是否有类似于 R 包预测中的 nnetar 的模型?
- powershell - 从远程 Ping 响应 IP 地址创建变量
- reactjs - 在谷歌应用引擎端点上部署 React Express 应用程序在我请求 url 时给出错误消息?
- gem5 - Gem 5 IOError:找不到系统文件的路径。完整的 System X86 模拟设置