TCL - 使用正则表达式获取由另一个字符串中的空格分隔的字符串列表

时间:2011-02-21 15:03:13

标签: regex tcl

如何在TCL中编写与单词和空格匹配的正则表达式。例如,我有

aaaa    bbbb    cccc       

我希望匹配“aaaaa”,“bbbb”,“cccc”。 还请告诉我什么是空格和非空格的正则表达符号。我无法在任何地方找到它。

感谢。

3 个答案:

答案 0 :(得分:4)

我的想法是只搜索单词字符组:

set text {aaaa bbbb cccc}
regexp -all -inline {\S+} $text
> aaaa bbbb cccc

您可以在re_syntax man page

上找到Tcl正则表达式语法的写法

答案 1 :(得分:2)

我不是完全确切地知道你想要什么,但这是一个例子:

set str "aaaa    bbbb    cccc       "
regexp {(\S+)\s+(\S+)\s+(\S+)} $str -> wordA wordB wordC
puts "The first is \"$wordA\", second \"$wordB\", and third \"$wordC\""

产生此输出:

  

第一个是“aaaa”,第二个是“bbbb”,第三个是“cccc”

在RE中,\S+表示非空白字符的非空序列,\s+表示非空的空白序列。我本可以分别使用\w+(“word”字符)和\W+(“非字”字符)。 RE环绕捕获组中的括号; Tcl不要求RE匹配整个输入字符串。

答案 2 :(得分:-1)

空格的正则表达式符号是“”。就像[a-z。]给你一个空格,以及句号和小写字母。