【发布时间】:2013-11-07 22:16:51
【问题描述】:
我一直在尝试使用 Tcl 中的正则表达式获取第一个斜杠之后的所有字符。
想要的是这样的:
abc/def/ghi
从上面的字符串我想要def/ghi。
我尝试使用以下命令,但它只给出ghi
set abc [regexp {([^/]*)$} $string match]
【问题讨论】:
我一直在尝试使用 Tcl 中的正则表达式获取第一个斜杠之后的所有字符。
想要的是这样的:
abc/def/ghi
从上面的字符串我想要def/ghi。
我尝试使用以下命令,但它只给出ghi
set abc [regexp {([^/]*)$} $string match]
【问题讨论】:
我认为你想要的表达式是/(.*)$,然后抓取集群组 1 作为你的结果。
【讨论】:
为什么在这个简单的情况下使用正则表达式?
只在/的第一次出现处拆分字符串:
set str "abc/def/ghi"
string range $str [string first "/" $str]+1 end
【讨论】:
获取值的最简单方法是这样的:
regexp {/(.*)} $string -> match
该命令会将您想要的字符串分配给match,并将(有效地)生成一个布尔值作为结果,指示 RE 是否完全匹配(即字符串中是否有/),允许您检测输入是否是虚假的。不需要对 RE 进行尾部锚定; Tcl 的 RE 引擎会从第一个 / 到字符串的末尾贪婪消费。
【讨论】: