2017-02-21 69 views
0

我有這樣的正則表達式中使用的崇高文本片段:正則表達式駝峯文件名,也刪除擴展

${TM_FILENAME/(^|-|\.)(?!ts)(.?)|/\U\2\E/g}

但它主要是關於這部分:(^|-|\.)(?!ts)(.?)https://regex101.com/r/zgiQZ0/1

我想要什麼被轉換成app-user-icon.component.tsAppUserComponent

我能走到今天,並獲得AppUserIconComponent.ts

我需要的是它而不是忽略((?!ts))它需要過濾掉/刪除.ts部分。

我在使用此零件時遇到問題:|/\U\2\E/g,因爲這是將其轉換爲Caps的原因。任何在線正則表達式解析器都不接受它(請參閱:https://regex101.com/r/zgiQZ0/2)。 另外我不確定如果我應該將它的大寫後的結果正則表達式。

刪除.ts部分工作在片段的另一部分:(.*)[.](.*)不知道該放在哪一個表達式中。

(這裏是整個片段,如果你有興趣:)

<snippet> 
    <content><![CDATA[ 
import { Component } from '@angular/core'; 

@Component({ 
    selector: '${TM_FILENAME/(.*)(.component)[.](.*)/$1/g}', 
    templateUrl: '${TM_FILENAME/(.*)[.](.*)/$1/g}.html' 
}) 
export class ${TM_FILENAME/(^|-|\.)(?!ts)(.?)|/\U\2\E/g} { 
    constructor() {} 
    $0 
}]]></content> 
    <tabTrigger>ng2-component</tabTrigger> 
    <scope>source.ts,source.tsx,source.js</scope> 
    <description>Angular 2 Component Snippet</description> 
</snippet> 

回答

1

我會建議使用此:

<snippet> 
    <content><![CDATA[ 
import { Component } from '@angular/core'; 

@Component({ 
    selector: '${TM_FILENAME/(.*)(.component)[.](.*)/$1/g}', 
    templateUrl: '${TM_FILENAME/(.*)[.](.*)/$1/g}.html' 
}) 
export class ${TM_FILENAME/(?:\.ts$)|(?:^|-|\.)(.)/\u\1/g} { 
    constructor() {} 
    $0 
}]]></content> 
    <tabTrigger>ng2-component</tabTrigger> 
    <scope>source.ts,source.tsx,source.js</scope> 
    <description>Angular 2 Component Snippet</description> 
</snippet> 

凡正則表達式是:

  • (?:\.ts$)不捕獲組以在文件名末尾匹配.ts
  • |
  • (?:^|-|\.)非捕獲組來匹配文件名,-.字符的起始,接着
    • (.)捕獲任何單個字符到捕獲組1
  • /開始更換
    • \u大寫字母下一個字符
    • \1這是早先捕獲到捕獲組的字符1
  • /更換端
  • g全局標誌來匹配不止一次
相關問題