替换同一行开头匹配的行上的所有斜杠

QAZ*_*001 3 javascript regex regexp-substr regexp-replace

我正在尝试更改一行上的所有斜杠以替换每行的beginninig中的3个字符的块.(以下示例中的PMC,PAJ等)

.PMC .89569XX/90051XX/90204XX/89533XX/90554XX/90053XX/90215XX/89874XX/89974XX/90481XX/90221XX/90508XX/90183XX/88526XX/89843XX/88041XX/90446XX/88515XX/89574XX/89847XX/88616XX/90513XX/90015XX/90334XX/89649XX.T00
.PAJ .77998XX/77896XX.T00.PAG .78116XX/78104XX/77682XX/07616XX/77663XX/77863XX/07634XX/78088XX/77746XX/78148XX.T00.PKC .22762XX/22358XX/22055XX/22672XX/22684XX/22154XX/22608XX/22768XX/22632XX/22266XX/22714XX/22658XX/22631XX/22288XX/22020XX/22735XX/22269XX/22138XX/22331XX/22387XX/22070XX/22636XX/22629XX/22487XX/22725XX.T00

期望的结果应该是:

PMC.89569XXPMC90051XXPMC90204XXPMC89533XXPMC90554XXPMC90053XXPMC90215XXPMC89874XXPMC89974XXPMC90481XXPMC90221XXPMC90508XXPMC90183XXPMC88526XXPMC89843XXPMC88041XXPMC90446XXPMC88515XXPMC89574XXPMC89847XXPMC88616XXPMC90513XXPMC90015XXPMC90334XXPMC89649XX.T00

我不知道如何做到这一点.这是我到目前为止:

 (.)([A-Z]{3})(.)(\/)
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

如果您只打算支持ECMAScript 2018及更新版本,您可以通过单个正则表达式实现所需:

.replace(/(?<=^\.([^.]+)\..*?)\//g, "$1")
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示.

细节

  • (?<=^\.([^.]+)\..*?) - 在当前位置的左侧立即需要的正面观察
    • ^ - 字符串的开头
    • \. - 一个点
    • ([^.]+) - 第1组:除点之外的一个或多个字符
    • \. - 一个点
    • .*? - 除了换行符之外的任何0+字符尽可能少
  • \/- 一个/炭.

JS演示:

var strs = ['.PMC.89569XX/90051XX/90204XX/89533XX/90554XX/90053XX/90215XX/89874XX/89974XX/90481XX/90221XX/90508XX/90183XX/88526XX/89843XX/88041XX/90446XX/88515XX/89574XX/89847XX/88616XX/90513XX/90015XX/90334XX/89649XX.T00','.PAJ.77998XX/77896XX.T00','.PAG.78116XX/78104XX/77682XX/07616XX/77663XX/77863XX/07634XX/78088XX/77746XX/78148XX.T00','.PKC.22762XX/22358XX/22055XX/22672XX/22684XX/22154XX/22608XX/22768XX/22632XX/22266XX/22714XX/22658XX/22631XX/22288XX/22020XX/22735XX/22269XX/22138XX/22331XX/22387XX/22070XX/22636XX/22629XX/22487XX/22725XX.T00'];
for (var s of strs) {
 console.log(s.replace(/(?<=^\.([^.]+)\..*?)\//g, "$1"));
}
Run Code Online (Sandbox Code Playgroud)