簡體   English   中英

正則表達式匹配tcl中的特定字符

[英]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

文檔: joinregexpsetTcl正則表達式的語法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM