Tcl正则表达式不在行尾

时间:2016-09-27 19:00:08

标签: tcl

我试图匹配一个看起来像这样的文件:

22.000 abc_/dasdf
23.652 abc_1/dasdf_0/l

我使用的正则表达式是:

[regexp { (\S+)\s+(.+) } $line -> number name }

但是,只有在文件中的字符串后面有空格时才会匹配。例如,它在以下情况下返回匹配:

22.000 abc_/dasdf<space>

但在/dasdf之后没有任何内容时无法匹配。默认情况下,文件中的字符串后面没有这样的空格。这可能是什么原因?

1 个答案:

答案 0 :(得分:2)

那是因为你的大括号内有空格。这些都很重要。

使用

regexp {(\S+)\s+(.+)} $line -> number name
# ......^...........^ no spaces here

或者如果你想要空白以便于阅读:

regexp -expanded  { (\S+) \s+ (.+) } $line -> number name