寻找可以"切换"的单一正则表达式两个州之间

时间:2018-04-05 15:41:03

标签: regex visual-studio-code

寻找一些创意。这适用于javascript风格的正则表达式。

当我说"切换"时,我的意思是单个正则表达式和单个capture-referencing-replacement-string,它可以执行以下操作:

'my-on-state'.replace(/MYSTERY/, '???')   // => 'my-off-state'
'my-off-state'.replace(/MYSTERY/, '???')   // => 'my-on-state'

鉴于if和两个正则表达式,这将是微不足道的;然而,只有1个正则表达式,我不确定如果没有某种方式可以做到这一点,并且#34;捕获"一个实际上并不存在于源文本中的组 - 有没有办法做到这一点,也许是使用超前捕获?

(对于那些想知道:这不是真正的javascript代码,它是VSCode键绑定参数;你在变量引用中允许单个正则表达式和替换,所以我很高兴我无论如何都要塞进那个单一的正则表达式。)

1 个答案:

答案 0 :(得分:1)

“您可以将我的问题归结为“是否有一个正则表达式, replace语句,将字符串“ apple”替换为“ banana”,并且 “香蕉”和“苹果””

“用于VSCode键绑定参数”

您无需详细解释,但听起来您需要有条件的替换-您可以在vscode代码段中进行替换:

stillLoading(false)

{
  "key": "shift+alt+y",                        // whatever keybinding you like
  "command":  "editor.action.insertSnippet",
  "args": {
    "snippet": "${TM_SELECTED_TEXT/(apple)|(banana)/${1:+banana}${2:+apple}/g}"

        // if you would rather leave the snippet in a snippet file use this version 
        //  and the snippet that follows below
    // "name": "Apple <=> Banana"  

  },

  // "when": "editorTextFocus && editorHasSelection"
},

demo of conditional replacement