regex - 需要有关 TCL 中正则表达式的帮助

标签 regex tcl

任何人都可以帮助我在 TCL 中执行以下正则表达式的“执行流程”。

% regexp {^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$} 9
1 (success)
%
%
% regexp {^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$} 64
1 (success)
% regexp {^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$} 255
1 (success)
% regexp {^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$} 256
0 (Fail)
% regexp {^([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$} 1000
0 (Fail)

任何人都可以解释一下这些是如何执行的吗?我很难理解。

最佳答案

正则表达式首先在主要捕获组周围有 anchor ^$,此处用方括号表示 ([01]?[0-9][0 -9]?|2[0-4][0-9]|25[0-5]) 这意味着它正在检查整个字符串。

其次,在捕获组内部,我们有 3 个部分:

[01]?[0-9][0-9]?

2[0-4][0-9]

25[0-5]

它们之间用|(或)运算符隔开,即如果字符串满足这3个部分中的任何一个,则匹配成功。

现在,各个部分:

  1. [01]?[0-9][0-9]? 这意味着它匹配 0 或 1 次 [01](0 或 1),然后是任何数字, 和任何数字,如果有的话。这一起接受像 000199 这样的字符串,但不能超过 199。

  2. 2[0-4][0-9] 这遵循与上述相同的逻辑,除了它验证数字从 200 到 249 的字符串。

    <
  3. 25[0-5] 最后,这个验证数字从 250 到 255 的字符串。

由于没有更多内容,只有从 000255 的数字才能通过验证。

这就是为什么 9、64 和 255 通过,但没有通过 256 或 1000。

关于regex - 需要有关 TCL 中正则表达式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511465/

相关文章:

regex - 正则表达式只匹配最小的

import - Tcl 如何从导入的例程中确定导入器的命名空间

shell - 如何一起使用 expect 和 shell 脚本

tcl - 一段时间后套接字超时

json - TCL 字典转 JSON

python - Django slug, `\w` 未检测到韩语 + 中文

javascript - 在 jquery 的正则表达式中使用变量

regex - 印度手机号码的正则表达式

python - 将一列中的文本拆分为三列

bash - 如何在 expect spawn 中传递星号?