tcl/tk参考——字符串操作regexp

tcl/tk参考——字符串操作regexp
添加链接描述
名称
regexp - 为一个字符串进行正则表达式匹配
语法
regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar …?

描述
如果正则表达式exp匹配上了string的部分或全部后就返回1,否则返回0。(指定了-inline后的情况如下)(正则表达式语法匹配描述在re_syntax中。)
如果指定了string后面的可选变元,那么matchVar将被赋值为于模式匹配的那部分字符串,第一个subMatchVar匹配第一个子模式匹配到的字符串,其它的以此类推。
如果紧接着regexp的第一个变元以-开头,那么就会被当作可选项来处理,可以使用的选项如下:
-about 不是去匹配正则表达式,而是返回一个包含着正则表达式信息的列表,列表的第一个元素为子表达式的个数,第二个元素为包含正则表达式各类描述信息的列表。这个可选项一般只用来作为调试使用。 -expanded 使正则表达式使用扩展语法,空格键和注释会被忽略,与指定了(?x)嵌入选项相同(参见re_syntax帮助手册)。 -indices 储存在subMatchVars中的数值不再是子模式匹配的字符串,而是包含两个十进制字符串的列表,分别表示子模式字符串在原字符串中的索引位置。 -line 换行符敏感。换行符是字符串的结束符,如果使用了这个标志位,[和.不会匹配换行符,如果有换行,那么 匹 配 一 个 空 字 符 串 , 这 个 标 志 为 相 当 于 同 时 指 定 了 − l i n e s t o p 和 − l i n e a n c h o r , 与 ( ? n ) 嵌 入 选 项 相 同 ( 参 见 r e s y n t a x 帮 助 手 册 ) 。 − l i n e s t o p 使 [ 和 . 不 会 匹 配 换 行 符 , 与 ( ? p ) 嵌 入 选 项 相 同 ( 参 见 r e s y n t a x 帮 助 手 册 ) 。 − l i n e a n c h o r 使 和 匹配一个空字符串,这个标志为相当于同时指定了-linestop和-lineanchor,与(?n)嵌入选项相同(参见re_syntax帮助手册)。 -linestop 使[^和.不会匹配换行符,与(?p)嵌入选项相同(参见re_syntax帮助手册)。 -lineanchor 使^和 linestoplineanchor(?n)resyntaxlinestop使[.(?p)resyntaxlineanchor使的行为改变为面向行的方式,与(?w)嵌入选项相同(参见re_syntax帮助手册)。 -nocase 是大写字母也被当作小写来处理,相当于不区分大小写字符。 -all 在字符串中符合使正则表达式的部分全部被匹配,返回匹配的个数,如果指定了匹配变量,那么最后一个匹配到的字符串将储存在这些变量中。 -inline 命令返回一个列表,列表元素为匹配的到的字符串和子模式匹配的字符串。如果和-all一起使用,那么返回所有匹配到的字符串和子模式匹配的字符串。例如:
regexp -inline – {/w(/w)} " inlined "

   in n

regexp -all -inline – {/w(/w)} " inlined "

   in n li i ne e

-start index 指定了开始匹配的索引位置,当使用了这个可选项,^不会从字符串的开头匹配,而是从指定的索引位置开始匹配。 – 指示可选项的结束,这个可选项主要用于exp以-开头的时候。 如果没有subMatchVars比子模式的数量多或者子模式没有匹配到字符串,相应的subMatchVar将被设为-1,如果指定了-indices将返回一个空字符串。
示例
寻找第一个以foo开头但不是foobar的字符串并且把余下的字符存入一个变量中:
regexp {/)(/w*)} $string -> restOfWord

注意整个匹配的子字符串已经被放置到变量->中,这样看起来比较好看,因为我们对它的值并没有兴趣。
寻找词badger在字符串中的索引,然后存储在变量location:
regexp -indices {(?i)/} $string location

计算字符串中八进制数的个数:
regexp -all {[0-7]} $string

列出字符串中所有的词:
regexp -all -inline {/S+} $string

你可能感兴趣的:(tcl)