regexp ?switches? exp str ?matchVar? ?subMatchVar subMatchVar ...?
判断正则表达式exp是否匹配部分或全部字符串str,如果匹配返回1,否则返回0。如果在str后面指定了其他参数,则视为变量的名称,其中保存的是str中匹配exp的部分。matchVar保存的是所有匹配exp的字符串。
switches为开关,是以“-”开头的字符串,regexp支持的开头有:
开关 | 说明 |
-about | 返回一个包含正则表达式信息的列表,而不是尝试匹配正则表达式。列表的第一个元素是子表达式数量。第二个元素是描述正则表达式的各种属性的属性名称列表。此开关主要用于调试。 |
-expanded | 启用正则表达式扩展语法,表达式中的空白符和注释将被忽略。与嵌入式选项(?x)相同。 |
-indices | 更改子matchVar、subMatchVar中存储的内容。不再存储str中匹配的字符,而是存储一个列表其中包含匹配的字符串在string中的起始和结束位置。 |
-line | 开启行敏感匹配。此选项相当于同时指定-linestop和-lineanchor选项。与嵌入式选项(?n)相同。 |
-linestop | 与嵌入式选项(?p)相同。 |
-lineanchor | 与嵌入式选项(?w)相同。 |
-nocase | 忽略大小写, |
-all | 使正则表达式在字符串中尽可能多地匹配,返回找到的匹配项的总数。如果指定了matchVar、subMatchVar,那么只会保存最后匹配的信息。 |
-inline | 将命令结果以列表形式返回,而不是替换到matchVar、subMatchVar变量中,所以当使用此开关时不能指定matchVar、subMatchVar变量。如果与-all一起使用,则会将每次的匹配结果都追加到列表中。 |
-start index | 指定匹配正则表达式的字符串str的起始位置。index的取值与string index中索引取值方式相同。使用此开关时,“^”不再匹配行开头,\A则匹配index开始的str子串的开头。 |
-- | 标记开关结束。后面的参数将被视为exp,即使它以-开头。 |
set multiline a\nAb\nc
regexp a.*b $multiline matched
puts $matched
regexp -expanded "a .*b" $multiline matched
puts $matched
regexp a.* $multiline matched
puts $matched
regexp -line a.* $multiline matched
puts $matched
regexp -line -nocase a.* $multiline matched
puts $matched
regexp -line -all -nocase a.* $multiline matched
puts $matched
regexp -line -all -nocase a.*b$ $multiline matched
puts $matched
regexp -start 1 -line -nocase -inline a.* $multiline
regexp -- -a.* $multiline
regexp -inline -- -a.* -abcde