我正在尝试使用捕获组将数据替换为自身,并对其中的数字进行操作。这是要处理的文本:
firstGroup1
firstGroup33
我的目标是用自身+ 1替换任意数量的组,例如:
firstGroup2
firstGroup34
当前,这是显示两个不同捕获组的代码:
data = data.replace(/(firstGroup)([1])/gms, '$1 $2')
为了理解这个问题,这是尝试做我想做的失败:
data = data.replace(/(firstGroup)([1])/gms, '$1' + $2+1
如何在nodeJS javascript中执行此加号?谢谢!
示例2:
文本:
.method public constructor <init>()V
.locals 2
失败的代码:
data = data.replace(/(constructor \<init\>[(][)]V.............)(..)/gms, (_, first, num) => first + (Number(num) + 1));
答案 0 :(得分:2)
您在这里没有任何 named 捕获组,只有简单的捕获组-使用替换功能替换第一个捕获组,将第二个捕获组连接到一个数字加1 :
const data = `firstGroup1
firstGroup33`;
const result = data.replace(
/(firstGroup)(\d+)/g,
(_, first, num) => first + (Number(num) + 1)
);
console.log(result);
因为您没有使用.
来匹配模式中任何位置的空格,所以不需要s
修饰符,也不需要使用^
或$
,因此也不需要m
修饰符。
(一个命名的捕获组看起来像:
const str = 'foo bar';
const match = str.match(/foo (?<whatComesAfterFoo>\S+)/);
console.log(match.groups.whatComesAfterFoo);
)