我需要通过替换与特定模式匹配的字符串的最后一个字符来对文件中的行进行后处理。
有问题的字符串是:
BRDA:2,1,0,0
我想将最后一位数字从 0 替换为 1。第二和第三位数字是可变的,但字符串将始终以我想要影响的 BRDA:2 开头。
我知道我可以像这样使用正则表达式匹配整个字符串
/BRDA:2,\d,\d,1
我如何获得执行替换的最后一位数字?
谢谢
最佳答案
您可以使用捕获组匹配并捕获字符串的部分,以便稍后使用反向引用在替换结果中恢复这些部分。您需要更换/删除的东西应该匹配。
所以,使用
var s = "BRDA:2,1,0,0"
s = s.replace(/(BRDA:2,\d+,\d+,)\d+/, "$11")
console.log(s)
如果您需要匹配整个字符串,您还需要用^
和$
包裹模式:
s = s.replace(/^(BRDA:2,\d+,\d+,)\d+$/, "$11")
详细信息:
^
- 字符串 anchor 的开始(BRDA:2,\d+,\d+,)
- 捕获第 1 组匹配:BRDA:2,
- 文字太阳串BRDA:2,
\d+
- 一位或多位数字,
- 逗号\d+,
- 1+ 位数字和一个逗号
\d+
- 1+ 位数字。
替换项 - $11
- 被 JS 正则表达式引擎解析为 $1
对保留在组 1 和 1
中的值的反向引用数字。
关于javascript - 使用正则表达式替换匹配字符串的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275704/