[英]Regexp to match specific characters in tcl
我有一個包含以下字符的變量
“@ / $%&*#{}4克_。[] 3435_.technology@lte042”
我想通過排除特殊字符來匹配“4g_.3435_.technologylte042”
碼:
set a "@\/$%&*#[](){}4g_.[]3435_.technology@lte042"
regexp {[\w._-]+} $a match
puts $match
我有輸出:
4g_.3435_.technology
我沒有得到剩下的人物“lte042”
請幫忙。
我想你試圖刪除所有非單詞字符,而不是試圖找到第一個連續的單詞字符序列。 您可以使用重復的搜索和替換:
regsub -all {[^\w._-]+} $a "" match
另一種選擇是使用-all -inline
選項來生成匹配列表而不是單個匹配。 但是,這將在連續的匹配之間放置空格。 例如:
set a "@\/$%&*#[](){}4g_.[]3435_.technology@lte042"
set match [regexp -all -inline {[\w._-]+} $a]
puts $match
==>
4g_.3435_.technology lte042
第二個set
是必需的,因為-inline
選項不允許將匹配變量指定為命令參數。
更近了一步:
% set s {@/$%&*#{}4g_.[]3435_.technology@lte042}
@/$%&*#{}4g_.[]3435_.technology@lte042
% join [regexp -inline -all {[][\w._-]+} $s] {}
4g_.[]3435_.technologylte042
文檔: join , regexp , set , Tcl正則表達式的語法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.