I want to add ɨ
on the right side of tʂ
, tʂ
, ʂ
, ʐ
, ts
, ts'
, and s
when they appear in isolation (when they are not touching other IPA characters). Note that there's a number after each of them, and the lines are surrounded by /
.
const input = `/ʊɔ3 yɛn2 tʂ2 tʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂ4 tʂə4 kə4/
/ʂ1/`
const output = input.replace(/(\/|[ ])(tʂ|tʂ\'|ʂ|ʐ|ts|ts\'|s)\d([ ]|\/)/g, '$&ɨ')
console.log(output)
Right now, this is the output:
/ʊɔ3 yɛn2 tʂ2 ɨtʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂ4 ɨtʂə4 kə4/
/ʂ1/ɨ
But what I want is this:
/ʊɔ3 yɛn2 tʂɨ2 tʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂɨ4 tʂə4 kə4/
/ʂɨ1/
CodePudding user response:
const input = `/ʊɔ3 yɛn2 tʂ2 tʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂ4 tʂə4 kə4/
/ʂ1/`
const output = input.replace(/(\/|[ ])(tʂ|tʂ\'|ʂ|ʐ|ts|ts\'|s)(\d([ ]|\/))/g, '$1$2ɨ$3')
console.log(output)
(included the digit in the third capture and changes the replacement text)
CodePudding user response:
What about using:
([/ ](?:t[ʂs]'?|[ʂʐs])(?=\d [ /]))
And replace by $1ɨ
. See an online demo
([/ ]
- Open 1st capture group and match a capture forward slahs or space;(?:t[ʂs]'?|[ʂʐs])
- Non-capture group to match any of the given combinations you provided;(?=\d [ /])
- Positive lookahead to assert position is followed by 1 digits and another forward slash or space;)
- Close 1st capture group which is now ready for backreference in replacement.
const input = `/ʊɔ3 yɛn2 tʂ2 tʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂ4 tʂə4 kə4/
/ʂ1/`
const output = input.replace(/([/ ](?:t[ʂs]'?|[ʂʐs])(?=\d [ /]))/g, '$1ɨ')
console.log(output)