【发布时间】:2015-07-23 13:12:05
【问题描述】:
我试图理解 Tcl 子表达式匹配和“贪婪”,但完全不知道发生了什么。参考http://wiki.tcl.tk/396的示例:
%regexp -inline (.*?)(n+)(.*) ennui
en e n {}
%regexp -inline ^(.*?)(n+)(.*)$ ennui
ennui e nn ui
尽管我并不完全理解“嵌套表达式”(这就是括号中的含义,对吗?)匹配,但我还是决定从小处着手,尝试将 * 和 + 作为贪婪运算符的区别:
% regexp -inline (.*)(u*)(.*) ennui
ennui ennui {} {}
% regexp -inline (.*)(u+)(.*) ennui
ennui enn u i
如果 * 匹配零个或多个,而 + 匹配一个或多个,我不明白这两个命令之间的输出差异。为什么 u* 和 u+ 在同一个字符串上会产生两个不同的结果?
我觉得这是一个非常重要的细微差别——如果我能掌握这个简单的模式匹配/正则表达式中发生的事情,我的生活就会变得完整。帮助!
提前致谢。
【问题讨论】:
标签: regex tcl regex-greedy