我想从这样的行中得到:
#define FACILITY_USERMODE_HYPERVISOR 53
到这样的行,用于枚举:
zFacilityUsermodeHypervisor = FACILITY_USERMODE_HYPERVISOR,
快速正则表达式替换是成功的一半,是否有快速获得完整结果的方法?
Regex: #define (FACILITY_\w+)\s+(\d+)
Replace: $1 = $1,
这让我有了
FACILITY_USERMODE_HYPERVISOR = FACILITY_USERMODE_HYPERVISOR,
我如何将第一部分转换为CamelCase?
答案 0 :(得分:1)
对于不支持\l
/ \u
和\L
/ \U
... \E
的VS S& R来说,这绝对难以实现运营商的替代模式。
我建议在Notepad ++
中使用 3个步骤来实现它#define (FACILITY_\w+)(?=\s+\d+)
正则表达式(see demo)复制您需要转向CaMeL案例的标识符。您的#define FACILITY_USERMODE_HYPERVISOR 53
将变为#define FACILITY_USERMODE_HYPERVISOR %%% FACILITY_USERMODE_HYPERVISOR 53
。#define
(?:#define\s+|(?!^)\G)\K_?([A-Za-z])([^\W_]*)_?(?=[\w\s]*%%%)
正则表达式和\u$1\L$2\E
替换之后,首次出现标识符时应用CaMeL案例。因此,#define FACILITY_USERMODE_HYPERVISOR %%% FACILITY_USERMODE_HYPERVISOR 53
将变为#define FacilityUsermodeHypervisor %%% FACILITY_USERMODE_HYPERVISOR 53
。#define (Facility\w*)\s+%%%\s+(\w+)\s+\d+
替代z$1 = $2,
替换see demo)。