1

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

触发:

( ${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" );  
4

1 回答 1

1

正如Qtax 已经展示的那样,您可以通过以下方式在正则表达式中使用条件:

(?(condition)then|else)

或者

(?(?=pattern)then|else)

正则表达式是在输入中查找模式和相似性的方法,但不是逻辑(否则我猜它也是逻辑表达式)。如果您的程序希望在 regexp 子句中添加一些逻辑,则可能是设计缺陷的第一个钟声。

更新+

还有,看不懂

括号内可以输入任何内容。但是如果内容被删除,我们也会删除内部填充。——阿塔那酶

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

您也可能在谈论Sublime Text功能,但不是纯粹的正则表达式(也可能有一些偏差取决于实现)。

于 2013-08-06T12:58:02.093 回答