Reputation: 7215
I am need to post-process lines in a file by replacing the last character of string matching a certain pattern.
The string in question is:
BRDA:2,1,0,0
I'd like to replace the last digit from 0 to 1. The second and third digits are variable, but the string will always start BRDA:2 that I want to affect.
I know I can match the entire string using regex like so
/BRDA:2,\d,\d,1
How would I get at that last digit for performing a replace on?
Thanks
Upvotes: 1
Views: 2601
Reputation: 626689
You may match and capture the parts of the string with capturing groups to be able to restore those parts in the replacement result later with backreferences. What you need to replace/remove should be just matched.
So, use
var s = "BRDA:2,1,0,0"
s = s.replace(/(BRDA:2,\d+,\d+,)\d+/, "$11")
console.log(s)
If you need to match the whole string you also need to wrap the pattern with ^
and $
:
s = s.replace(/^(BRDA:2,\d+,\d+,)\d+$/, "$11")
Details:
^
- a start of string anchor(BRDA:2,\d+,\d+,)
- Capturing group #1 matching:
BRDA:2,
- a literal sunstring BRDA:2,
\d+
- 1 or more digits,
- a comma\d+,
- 1+ digits and a comma\d+
- 1+ digits.The replacement - $11
- is parsed by the JS regex engine as the $1
backreference to the value kept inside Group 1 and a 1
digit.
Upvotes: 3