[英]Tcl regular expression string matching
我有一個像這樣的字符串列表:
A/B/C/P/E
我想使用正則表達式來捕獲最多
A/B/C/P
並忽略尾隨/E
我試過用:
set mystring {A/B/C/P/E}
regex -nocase -- {(.*)\/\S+} $myString match
puts $match
但
puts $match
版畫
A/B/C/P/E
我究竟做錯了什么?
你實際上做了幾件事。
你有一個名為$mystring
的字符串,但你在函數中使用$myString
。
regexp
的語法是:
regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?
所以,如果你想要子匹配,你需要使用另一個變量。
現在,為了使一切更清潔,您可以使用:
set myString {A/B/C/P/E}
regexp -- {(.*)/\S+} $myString -> match
puts $match
# => A/B/C/P
您不需要轉義正斜杠,如果您的正則表達式中沒有包含大小寫的字符,則不需要-nocase
標志。
整個匹配存儲在名為->
的變量和match
的第一個子match
。
替代方法:拆分字符串,除最后一個元素外,重新加入列表:
% set mystring {A/B/C/P/E}
A/B/C/P/E
% set new [join [lrange [split $mystring /] 0 end-1] /]
A/B/C/P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.