regex 当匹配项单独出现时,在匹配项右侧添加字符

cbeh67ev  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(88)

ʂʐtsts's单独出现时(当它们不与其他国际音标字符接触时),我想在它们的右侧添加ɨ。请注意,它们后面都有一个数字,并且这些行被/包围。

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)

现在,输出如下:

/ʊɔ3 yɛn2 tʂ2 ɨtʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂ4 ɨtʂə4 kə4/
/ʂ1/ɨ

但我想要的是:

/ʊɔ3 yɛn2 tʂɨ2 tʂɑʊ3/
/ʊɔ3 mən5 tɕ'ʂ2 tʂɑʊ3/
/pu2 ʂɨ4 tʂə4 kə4/
/ʂɨ1/
uxh89sit

uxh89sit1#

如何使用:

([/ ](?:t[ʂs]'?|[ʂʐs])(?=\d+[ /]))

并替换为$1ɨ。请参阅联机demo

  • ([/ ]-打开第一个捕获组,并匹配一个捕获转发slahs或空格;
  • (?:t[ʂs]'?|[ʂʐs])-与您提供的任何给定组合匹配的非捕获组;
  • (?=\d+[ /])-Assert位置的正前瞻后跟1+数字和另一个正斜杠或空格;
  • )-关闭第一个捕获组,该捕获组现在已准备好在替换中进行反向引用。
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)
6ie5vjzr

6ie5vjzr2#

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)

(包括第三个捕获中的数字并更改替换文本)

相关问题