正则表达式使用条件

时间:2013-08-06 12:29:43

标签: regex conditional code-snippets sublimetext

我知道我真的需要阅读其中一本书(12)来学习正则表达式,但与此同时我对已经掌握了知识的人提出了一个小问题。 我想写一个sublime文本的片段,如果我开始输入则留下括号的内部空格但是如果我删除了选择,则删除括号内的所有内容。

触发:

( ${1:anything could be typed here} )

类型的:

( I_wrote_that )

删除:

()

我不要求有人为我写,但对条件正则表达式的明确解释将非常感激。 谢谢!

注意:我指的是正则表达式中的条件语法。 NB2:这是一个C / C ++ printf的例子。

段:

printf( "${1:%s}\\n" ${1/([^%]|%%)*(%.)?.*/(?2:,:\);)/} $2 ${1/([^%]|%%)*(%.)?.*/(?2:\);))/}

给出:

printf( "%s\n" ,  );

或者:

printf( "\n" );  

1 个答案:

答案 0 :(得分:1)

作为Qtax already showed,你可以这样使用regexp中的条件:

(?(condition)then|else)

(?(?=pattern)then|else)

正则表达式是在输入中找到模式和相似性的方法,但不是逻辑(否则我猜,它也将是逻辑表达式)。如果你的程序希望在regexp子句中加入一些逻辑,那么它可能是设计缺陷的首要问题。

<强> UPDATE +

另外,我不明白

  

可以在括号内输入任何内容。但是如果内容被删除,我们也会删除内部填充。 - Athanase

你在谈论动态正则表达式吗?看起来你需要一些事件驱动的正则表达式或命令行来分析你的正则表达式。

您也可以谈论Sublime Text功能,但不是纯正的regexp(也可能有一些偏差取决于实现)。